1、二级 C+笔试 314 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.有如下的程序: #include cstring.h #include iostream.h using namespace std; class MyString public: MyString(const char*s); MyString () delete data; protected: unsigned len; char*data; ; MyString:MyString(const char *s) len=strlen (s); data=ne
2、w charlen+1; strcpy (data,s); int main () MyString a(“C+ Programing“); MyString b(a); return 0; 在运行上面的程序时出错,出错的原因是(分数:2.00)A.构造函数的实参不允许是本类的对象B.没有定义实现深层复制(深拷贝)的复制构造函数C.构造对象 a 时实参与形参类型不符D.系统不能生成默认的复制构造函数2.在面向对象的程序设计中,下列叙述中错误的是(分数:2.00)A.任何一个对象构成一个独立的模块B.一个对象不是独立存在的实体,各个对象之间有关联,相互依赖C.下一层次的对象可以继承上一层次对象的
3、某些属性D.上述三种说法都正确3.下面的函数模板定义中错误的是(分数:2.00)A.template class Q q F(Q return Q+x;B.template class Q Q F(Q return x+x;C.template class T T F(Treturn x*x;D.template class T bool F(Treturn x1;4.下列关于栈的描述中错误的是(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针5.关于类模板,下列表述不正确的是(分数:2.00)A.用类模板定义一个对象时
4、,不能省略实参B.类模板只能有虚拟类型参数C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数6.下列叙述中正确的是(分数:2.00)A.在面向对象的程序设计中,各个对象之间具有密切的联系B.在面向对象的程序设计中,各个对象都是公用的C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小D.上述三种说法都不对7.已知:int m=10;在下列定义引用的语句中,正确的是(分数:2.00)A.int class Base public: Base() cout“BB“; f(); voidf()cout “Bf“; ; class Derived: public Base
5、 public: Derived ()cout“DD“; void f()cout“Df“; ; int main()Derived d; return 0; 执行上面的程序将输出(分数:2.00)A.BBBfDDB.BBDfDDDfC.DDD.DDBBBf9.下列关于 this 指针的叙述中,正确的是(分数:2.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针10.有如下程序: #include iostream using namespace std; class BASE p
6、ublic: BASE()cout“BASE“; ; class DERIVED:public BASE public: DERIVED()cout“DERIVED“; ; int main()DERIVED x;return 0; 执行后的输出结果是(分数:2.00)A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE11.数据库系统的核心是(分数:2.00)A.数据模型B.数据库管理系统C.数据库D.数据库管理员12.程序设计方法要求在程序设计过程中(分数:2.00)A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图B.先编制出程序,经调试使程序运
7、行结果正确后再在程序中的适当位置处加注释C.先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释D.以上三种说法都不对13.下列类的定义中,有( )处语法错误。 class Base public: Base() Base(int i) data=i; private: int data; ; class Derive : public Base public: Derive() : Base(0) Derive (int x) d=x; void setvalue(int i) data=i; private: d; ;(分数:2.00)A.1B.
8、2C.3D.414.面向对象程序设计思想的主要特征中不包括(分数:2.00)A.继承性B.功能分解,逐步求精C.封装性和信息隐藏D.多态性15.以下程序的输出结果是 #include iostream.h void main () int a=0, i; for (i=1; i5; i+) switch (i) case 0 : case 3 : a+=2; case 1 : case 2 : a+=3; default : a+=5; coutaendl; return; (分数:2.00)A.31B.13C.10D.2016.下列打开文件的表达式中,错误的是(分数:2.00)A.ofstr
9、eam ofile;ofilopen(“C:/vc/abtxt“,ios:binar;B.fstream iofile;iofilopen(“abtxt“,ios:at;C.ifstream ifile(“C:/vcXXabtxt“);D.couopen(“C:/vc/abtxt“,ios:binar;17.下列说法中错误的是(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 成员B.私有继承时基类中的 protected 成员在派生类中仍是 protected 成员C.私有继承时基类中的 public 成员在派生类中仍是 private 成员D.保护继承
10、时基类中的 public 成员在派生类中仍是 protected 成员18.下列函数中对调用它的函数没有起到任何作用的是(分数:2.00)A.void f1(double B.double f1(double return x-1.5;C.void f3(double -x;D.double f4(double *-*x; return*x;19.有以下程序: #include iostream using namespace std; class A private: int a; public: A(int i) a=i; void disp() couta“,“; ; class B p
11、rivate: int b; public: B(int j) b=j; void disp() coutb“,“; ; class C : public B,public A private: int c; public: C(int k) :A(k-2),B(k+2) c=k; void disp () A:disp (); B:disp (); coutcendl; ; int main () C obi (10); obj.disp (); return 0; 程序执行后的输出结果是(分数:2.00)A.10,10,10B.10,12,14C.8,10,12D.8,12,1020.有如
12、下程序: #include iostream.h #include iomanip.h using namespace std; class CSum int x,y; public: CSum (int x0,int y0):x(x0),y(y0) friend ostream return os; ; int main () CSum y(3,5); coutsetfill(*)8; couty; return 0; 执行上面程序的输出是(分数:2.00)A.88B.*88C.*8*8D.8*821.在结构化设计方法中生成的结构图(SC) 中,带有箭头的连线表示(分数:2.00)A.模块之
13、间的调用关系B.程序的组成成份C.控制程序的执行顺序D.数据的流向22.下列叙述中正确的是(分数:2.00)A.接口复杂的模块,其耦合程度一定低B.耦合程度弱的模块,其内聚程度一定低C.耦合程度弱的模块,其内聚程度一定高D.上述三种说法都不对23.有以下程序 #include iostream #include string using namespace std; class base private: char baseName10; public: base () strcpy(baseName,“Base“); virtual char *myName() return baseNam
14、e; char *className() return baseName; ; class Derived : public base private: char derivedName10; public: Derived() strcpy(derivedName,“Derived“); char *myName() return derivedName; char *className() return derivedName; ; void showPtr(base int main () base bb; Derived dd; showPtr(dd); return 0; 运行后的输
15、出结果为(分数:2.00)A.Derived BaseB.Base BaseC.Derived DerivedD.Base Derived24.下面关于虚函数的描述中正确的是(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型25.有如下程序: #include iostream void fun(intx=y;y=t; int main () int a2=23,42; fun(a1,a0); std:couta0“,“a1std:endl; return
16、 0; 执行后的输出结果是(分数:2.00)A.42,42B.23,23C.23,42D.42,2326.在一棵二叉树上第 5 层的结点数最多是(分数:2.00)A.8B.16C.32D.1527.数据的存储结构是指(分数:2.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示28.若有以下程序: #include iostream using namespace std; int f() static int i = 0; int s = 1; s+=i; i+; return s; int main() int i,a =
17、 0; for(i = 0;i5;i+) a+=f(); coutaendl; return 0; 程序运行后,输出的结果是(分数:2.00)A.20B.24C.25D.1529.以下选项中合法的用户标识符是(分数:2.00)A.longB._2TestC.3DmaxD.dat30.在关系模型中,(分数:2.00)A.为了建立一个关系,首先要构造数据的逻辑关系B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表31.若有以下定义: int a = 1,2,3,4,5,6,7; char c1 = b,c2 = 2; 则数值
18、不为 2 的表达式是(分数:2.00)A.a1B.d-c1C.a3-c2D.c2-032.若类 A 和类 B 的定义如下: class A int i,j; public: int geti () return i; ; class B : public A int k; public: void make () k=i*j; ; 则上述定义中非法的语句是(分数:2.00)A.k=i*j;B.int k;C.return i;D.void make()33.针对数组定义 int data10;,下列表述中错误的是(分数:2.00)A.用*data 可访问到数组的首元素B.用 data9可访问到
19、数组的末元素C.用 data10访问数组元素会超出数组边界D.data 共有 10 个元素,其首元素是 data134.一个类可以同时继承多个类,称为多继承。下列关于多个继承和虚基类的表述中,错误的是(分数:2.00)A.每个派生类的构造函数都要为虚基类构造函数提供实参B.多继承时有可能出现对基类成员访问的二义性问题C.使用虚基类可以解决二义性问题并实现运行时的多态性D.建立最派生类对象时,虚基类的构造函数会首先被调用35.有以下程序: #include iostream using namespace std; int main () int x=15; while (x10 if (x/3
20、) x+; break; coutxendl; return 0; 执行后的输出结果是(分数:2.00)A.15B.16C.17D.18二、B填空题/B(总题数:15,分数:30.00)36.在一个容量为 25 的循环队列中,若头指针 front=16,尾指针 rear=9,则该循环队列中共有_个元素。(分数:2.00)填空项 1:_37.数据的逻辑结构在计算机存储空间中的存放形式称为数据的 1。(分数:2.00)填空项 1:_38.Jackson 方法是一种面向 1 的结构化方法。(分数:2.00)填空项 1:_39.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00
21、)填空项 1:_40.关系数据库管理系统能实现的专门关系运算包括选择、连接和 1。(分数:2.00)填空项 1:_41.求 1100 的和,可写成 for(s=0,i=1;_;i+) s+=1 的形式。(分数:2.00)填空项 1:_42.从实现的角度划分,C+所支持的两种多态性分别是 1 时的多态性和运行时的多态性。(分数:2.00)填空项 1:_43.非成员函数只有在声明为类的 1 才能防问这个类的所有 private 成员。(分数:2.00)填空项 1:_44.在下面横线上填上适当的语句,完成程序。 #include iostream using namespace std; class
22、 Base int x; public: Base(int i) x=i; Base() ; class Derived : public Base public: _/完成类 Derive 构造函数的定义 ; int main() Derived Obj; return 0; 在横线处应填入的语句是_。(分数:2.00)填空项 1:_45.非成员函数应声明为类的 1 函数才能访问这个类的 private 成员。(分数:2.00)填空项 1:_46.在下面程序的横线处填上适当的语句,使该程序的输出为 12。 #include iostream using namespace std; clas
23、s Base public: int a; Base(int i) a=i; class Derived : public Base int a; public: Derived(int x) : Base(x),b(x+1) void show() _; /输出基类数据成员 a的值 coutbendl; ; int main () Derived d(1); d.show(); return 0; (分数:2.00)填空项 1:_47.假定 A 为一个类,则语句 A(A if (xy) a=x; x=y; y=a; if (yz) a=y; y=z; z=a; if (xy) a=x; x=
24、y; y=a; (分数:2.00)填空项 1:_49.多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但运算符只能作为类的 1函数重载。(分数:2.00)填空项 1:_50.下面是一个栈类的模板,其中 push 函数将元素 i 压入栈顶,pop 函数弹出栈顶元素。栈初始为空,top 值为 0,栈顶元素在 stacktop-1中,在下面横线处填上适当语句,完成栈类模板的定义。 template class T Class Tstack enumsize=1000; T stacksize; int top; public: Tstack():top(0) void push(co
25、nst T T pop() if(top=0) exit(1); /栈空时终止运行 return _ ; ;(分数:2.00)填空项 1:_二级 C+笔试 314 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.有如下的程序: #include cstring.h #include iostream.h using namespace std; class MyString public: MyString(const char*s); MyString () delete data; protected: unsigned len;
26、char*data; ; MyString:MyString(const char *s) len=strlen (s); data=new charlen+1; strcpy (data,s); int main () MyString a(“C+ Programing“); MyString b(a); return 0; 在运行上面的程序时出错,出错的原因是(分数:2.00)A.构造函数的实参不允许是本类的对象B.没有定义实现深层复制(深拷贝)的复制构造函数 C.构造对象 a 时实参与形参类型不符D.系统不能生成默认的复制构造函数解析:解析 本题考核类的构造函数。c+语言中当一个新对象被
27、另一个已存在的同类型对象初始化时要调用复制构造函数,语句“MyString b(a);“符合此条件将调用类 MyString 的复制构造函数,但是类MyString 没有定义此复制构造函数,所以会出错。2.在面向对象的程序设计中,下列叙述中错误的是(分数:2.00)A.任何一个对象构成一个独立的模块B.一个对象不是独立存在的实体,各个对象之间有关联,相互依赖 C.下一层次的对象可以继承上一层次对象的某些属性D.上述三种说法都正确解析:解析 在面向对象的程序设计中,一个对象是一个可以独立存在的实体。各个对象之间相对独立,相互依赖性小。所以,选项 B 错误,应为所选。3.下面的函数模板定义中错误的
28、是(分数:2.00)A.template class Q q F(Q return Q+x; B.template class Q Q F(Q return x+x;C.template class T T F(Treturn x*x;D.template class T bool F(Treturn x1;解析:解析 本题考核函数模板的定义。模板定义的类型参数表中包含一个或多个由逗号分隔的类型参数项,每一项由关键字 class 后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型。A) 选项中标识符 Q 作为类型参数,不能用作数据类型参与“Q+x“的运算。4.下列关于栈的描述中错
29、误的是(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储 C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针解析:解析 本题考核栈的基本概念,我们可以通过排除法来确定本题的答案。栈是限定在一端进行插入与删除的线性表,栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出“或“后进先出“的原则组织数据的,这便是栈的记忆作用,所以选项 A 和选项 C 正确。对栈进行插入和删除操作时,栈顶位置是动态变化的,栈底指针不变,选项 D 正确由此可见,选项 B 错误。5.关于类模板,下列表述不正确的是
30、(分数:2.00)A.用类模板定义一个对象时,不能省略实参B.类模板只能有虚拟类型参数 C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数解析:解析 本题考核类模板的概念。类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型(成员的类型以及成员函数的参数和返回值的类型)。C+中可以为类模板的参数设置默认值,所以 B) 选项是不正确的,其他选项的表述都是正确的。6.下列叙述中正确的是(分数:2.00)A.在面向对象的程序设计中,各个对象之间具有密切的联系B.在面向对象的程序设计中,各个对象都是公用的C.在面向对象的程序设
31、计中,各个对象之间相对独立,相互依赖性小 D.上述三种说法都不对解析:解析 在面向对象的程序设计中,对象是面向对象的软件的基本模块,它是由数据及可以对这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作。从模块的独立性考虑,对象内部各种元素彼此结合得很紧密,内聚性强。由于完成对象功能所需要的元素(数据和方法)基本上都被封装在对象内部,它与外界的联系自然就比较少,所以,对象之间的耦合通常比较松。所以,选项 A 与 B 错误,选项 C 正确。7.已知:int m=10;在下列定义引用的语句中,正确的是(分数:2.00)A.int class
32、 Base public: Base() cout“BB“; f(); voidf()cout “Bf“; ; class Derived: public Base public: Derived ()cout“DD“; void f()cout“Df“; ; int main()Derived d; return 0; 执行上面的程序将输出(分数:2.00)A.BBBfDD B.BBDfDDDfC.DDD.DDBBBf解析:解析 本题考核类的继承与派生知识。派生类构造函数执行的一般次序如下:首先调用基类构造函数,调用顺序按照它们被继承时说明的顺序。然后调用子对象的构造函数,调用顺序按照它们在
33、类中的说明顺序。最后是派生类构造函数中的内容。题中定义派生类对象 d 时,先调用基类 Base 的构造函数输出 BBBf(注意:基类 Base 构造函数中调用的函数 f()是基类中的实现,而不是派生类中的实现),然后调用派生类 Derived 的构造函数输出 DD。9.下列关于 this 指针的叙述中,正确的是(分数:2.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针 解析:解析 本题考核 this 指针的使用。类的每一个成员函数都有一个隐含定义的常量指针,称为this 指针。它
34、是成员函数所属对象的指针,它指向类对象的地址。成员函数可以通过这个指针知道自己属于哪一个对象。但是在使用 this 指针时需要注意的是:this 指针只能在类的成员函数中使用,它指向该成员函数被调用的对象。this 指针一般用于返回当前对象自身;静态成员函数没有 this 指针。因为类只有一个静态成员函数实例,所以使用 this 指针没有什么意义。在静态成员函数中使用 this 指针会引起编译错误。10.有如下程序: #include iostream using namespace std; class BASE public: BASE()cout“BASE“; ; class DERIV
35、ED:public BASE public: DERIVED()cout“DERIVED“; ; int main()DERIVED x;return 0; 执行后的输出结果是(分数:2.00)A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE 解析:解析 本题考核派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。所以当 main 函数结束时,派生类 DERIVED 的对象 x 将
36、被删除,那么派生类 DERIVED 的析构函数先被调用,输出 DERIVED,然后调用基类的析构函数输出 BASE。11.数据库系统的核心是(分数:2.00)A.数据模型B.数据库管理系统 C.数据库D.数据库管理员解析:解析 数据库管理系统(DBMS)是整个数据库系统的核心,它对数据库中的数据进行管理,还在用户的个别应用与整体数据库之间起接口作用。选项 B 正确。12.程序设计方法要求在程序设计过程中(分数:2.00)A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图B.先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释C.先画出流程图,再根据流程图编制出程序,
37、最后经调试使程序运行结果正确后再在程序中的适当位置处加注释D.以上三种说法都不对 解析:解析 程序设计的过程应是先画出流程图,然后根据流程图编制出程序,所以选项 A 错误。 程序中的注释是为了提高程序的可读性,使程序易于理解、易于维护,注释必须在编制程序的同时加入,所以,选项 B 和 C 错误。本题的正确答案为 D。13.下列类的定义中,有( )处语法错误。 class Base public: Base() Base(int i) data=i; private: int data; ; class Derive : public Base public: Derive() : Base(0
38、) Derive (int x) d=x; void setvalue(int i) data=i; private: d; ;(分数:2.00)A.1B.2 C.3D.4解析:解析 本题考核派生类的定义和成员的访问权限。第一处错误:在派生类的构造函数 Derive(int x)中没有调用基类的构造函数对基类对象初始化;第二处错误:数据 data 是基类 Base 的私有成员,派生类 Derive 不能访问,所以在函数 setvalue 中对 data 的赋值是错误的。14.面向对象程序设计思想的主要特征中不包括(分数:2.00)A.继承性B.功能分解,逐步求精 C.封装性和信息隐藏D.多态性
39、解析:解析 C+是一种面向对象的程序设计语言,它充分支持面向对象思想中的 3 个主要特征:封装性,继承性、多态性。B 选项所描述是结构化程序设计的思想。15.以下程序的输出结果是 #include iostream.h void main () int a=0, i; for (i=1; i5; i+) switch (i) case 0 : case 3 : a+=2; case 1 : case 2 : a+=3; default : a+=5; coutaendl; return; (分数:2.00)A.31 B.13C.10D.20解析:解析 本题考核 for 语句和 switch 语
40、句的综合运用。 switch 语句的执行过程是:在 switch 后面的表达式的值和 case 后面常量表达式的值吻合时,就执行后面的语句。如果在该语句的后面没有break 语句,则继续执行下一个 case,直到遇到 break 语句或 switch 多分支的结束。在 switch 语句中,break 语句的作用是使流程跳出 switch 结构,终止 switch 语句的执行。因为每个 case 语句后面都没有break 语句,所以,第 1 次循环(i=1)执行后,a 的值为 8。第 2 次循环(i=2)执行过后,a 的值变为 16。第 3 次循环(i=3)执行过后,a 的值变为 26。第 4
41、 次循环执行过后,a 的值变为 31。然后执行 i+,这时循环条件为假,结束循环。所以最后 a 的值为 31。16.下列打开文件的表达式中,错误的是(分数:2.00)A.ofstream ofile;ofilopen(“C:/vc/abtxt“,ios:binar;B.fstream iofile;iofilopen(“abtxt“,ios:at;C.ifstream ifile(“C:/vcXXabtxt“);D.couopen(“C:/vc/abtxt“,ios:binar; 解析:解析 本题考核文件的 I/O 操作。流可以分为 3 类:输入流、输出流以及输入/输出流,相应地必须将流说明为
42、 ifstream、ofstream 以及 fstream 类的对象。如,说明一个输入流对象:ifstream ifile;。说明了流对象后,可使用函数 open()打开文件。文件的打开即是在流与文件之间建立一个连接。open()的函数原型为:void open(const char *filename,int mode,int port=filebuf:openprot);其中,filename 是文件名字,它可包含路径说明。mode 说明文件的打开模式。除了 open()成员函数外,ifstream、ofstream 以及 fstream 三类流的构造函数也可以打开文件,其参数同 open
43、()函数。例如:ifstream ifile(“c:/vc/abc.txt“);。打开的文件使用完毕后,必须使用 close()函数将其关闭。close()函数也是流类的成员函数,它没有参数与返回值,其作用是将缓冲区的内容刷新并撤销流与文件之间的连接。当流对象的生存周期后,相应的析构函数也会将文件关闭。由此可知,A、B 和 C 选项的表达式都是正确的。对于 D 选项,由于 open 函数并不是 cout 对象中的成员函数,所以对 open 的调用是非法的。17.下列说法中错误的是(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 成员B.私有继承时基类中的
44、 protected 成员在派生类中仍是 protected 成员 C.私有继承时基类中的 public 成员在派生类中仍是 private 成员D.保护继承时基类中的 public 成员在派生类中仍是 protected 成员解析:解析 本题考核派生类中的访问权限问题。继承方式包括:public(公有派生),protected(保护派生)和 private(私有派生)。不同的继承方式会导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。这里的访问主要来自两个方面:一是派生类中的新增成员对从基类继承来的成员的访问;二是派生类外部通过派生类对象对从基类继承来的成员的访问。私有继承时
45、基类中的 protected 成员在派生类中变成了 private 成员,所以 B 选项的描述是错误的。18.下列函数中对调用它的函数没有起到任何作用的是(分数:2.00)A.void f1(double B.double f1(double return x-1.5;C.void f3(double -x; D.double f4(double *-*x; return*x;解析:解析 本题考核函数的调用和参数值的传递(形参、实参)。选项 C 中的函数 D 调用采用按值传递的方式,函数中对形参的修改没有影响到实参的值,而且函数 G 还没有返回值,所以函数耀对调用它的函数没有起到任何作用。选项
46、 A 中的函数 f1 采用引用传递的方式影响实参的值,选项 D 中的函数 f4 通过返回值和指针调用来影响调用函数;选项 B 中的函数 f2 采用返回值的形式对其调用函数发生作用。19.有以下程序: #include iostream using namespace std; class A private: int a; public: A(int i) a=i; void disp() couta“,“; ; class B private: int b; public: B(int j) b=j; void disp() coutb“,“; ; class C : public B,public A private: int c; public: C(int k) :A(k-2),B(k+2) c=k; void disp () A:disp (); B:disp (); coutcendl; ; int main () C obi (10); obj.disp (); return 0; 程序执行后的输出结果是(分数:2.00)A.10,10,10