第 1 页:选择题 |
第 5 页:参考答案 |
21.A。【解析】该题考查了函数参数传递的两种方式:引用传递和值传递,引用传递时x和y会交换,而值传递时二者不交换,因此选10。
22.C。【解析】每调用一次get函数时,对新的类A对象进行一次实例化,调用一次构造函数,类A的静态成员变量b便加1。
23.D。【解析】简单类之间继承关系的调用,按照通常做法便可以得到答案。center.get()函数调用后,3和4的和被返回,接着再调用Circle类的radius成员变量5相加后得到12。
24.A。【解析】C++不仅可以对运算符进行重载,还可以重载类型转换符,函数声明的形式为:0perator类型符()const。
25.C。【解析】函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。
26.D。【解析】setw(6)将输出宽度设为6,如果位数不够,则在最左边补齐,因此该项输出一定不会与其他3项一致。
27.A。【解析】析构函数不能被重载,因为它的函数中不带有任何参数,也没任何返回值,函数只有一个版本即“~类名(){}”。
28.B。【解析】构造函数没有返回值,虽然叫函数,但是它没有任何返回值,包括void型都不是,官方叫法应该叫“构造器”。
29.A。【解析】PAT(*ad){3}该表达式表示一个指向类PAT的数组的指针,只是声明了该指针,而并没有进行实例化对象,因此该语句运行时并不会调用构造函数。
30.C。【解析】保护继承时,类成员的访问级别只能是降低为保护模式,因此即使基类的公有成员,也被缩小为保护模式。
31.D。【解析】派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以在定义派生类的构造函数时,除了对自己的类据成员进行初始化外,还必须负责调用基类构造函数,使基类的数据成员得以初始化。
32.B。【解析】派生类成员函数不能访问基类的private成员,只能由基类的对象来访问。这才体现了C++的数据封装特性。
33.C。【解析】该题考查了C++模板类和+运算符重载的知识,3+b1时,程序不能将b1转化为整型,所以编译会出错。
34.C。【解析】输入流要打开的文件不存在,则会自动建立该文件,而输出流要打开的文件不存在,则会报错,而不会新建一个文件。
35.B。【解析】const函数只能被const对象调用,a.get()函数调用返回值是3,而b.get()调用的返回值是8。
36.B。【解析】本题考查的是变量的作用域及其生存周期。一个全局变量的生存周期从它被声明开始,直到程序结束;一个局部变量的生存周期从它被声明开始,直到包含它的最近的一个程序块结束。静态变量的生存周期将延续到整个程序的终止。
37.A。【解析】C++在创建一个对象时,会调用类的构造函数。执行MyClassab,(2),*P;创建了两个对象a、b和指针P,在创建对象a和b会调用构造函数,而创建指针P时,由于P本身不是对象,所以不调用类的构造函数。
38.D。【解析】逻辑运算符“‖”表示或的意思。
39.C。【解析】本题考查简单的if…else语句。先执行条件if(a40.D。【解析】C++语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass()。
编辑推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |