1、国家二级 C+机试(选择题)模拟试卷 86及答案与解析 一、选择题 1 设 c1和 c2是类 MyClass的对象,若将后缀运算符 “+”作为类 MyClass的友元函数重载,运算符 “,作为类 MyClass的成员函数重载,则表达式 e2*c1+等价于( )。 ( A) c1 operaor+(0) operator*(c2) ( B) c2 operator*(c1 operator+(0) ( C) c2 operator*(operator+(c1, 0) ( D) operator*(operator+(c1, 0), c2) 2 有如下类定义: class MyClass publ
2、ic: MyClass(double d=O 0): val(d) _ 前缀自增运算符 +的声明 private: double val; ; 若要使语句序列 MyClass x(2 1), y; y=+x; 能够正常运行,横线处的语句应为 ( )。 ( A) MyClass class TV public: TV(int s=41):size(s) TV(const TV ; TV fun(TV return t; int main() TV x,y; x=fun(y); return 0; 则 TV 类的复制构造函数被调用的次数是 ( A) 1次 ( B) 2次 ( C) 3次 ( D)
3、4次 31 有如下程序: #include #include using namespace std; class MyBag public: MyBag(string br=“ABC“):brand(br) cout #include using namespace std; class Wheel public: Wheel(string s=“W“):name(s) cout using namespace std; class Appliance public: Appliance() cout #include using namespace std; class Animal pu
4、blic: virtual string GetType() const return “Animal“; virtual string GetVoice() const return “Voice“; ; class Dog:public Animal public: string GetType() const return “Dog“; string GetVoice() const return “Woof“; ; class Cat:public Animal public: string GetType() const return “Cat“; string GetVoice()
5、 const return “Miaow“; ; void Type(Animal double d1,d2; 则下列调用中,错误的是 ( A) sum(d1,d2); ( B) sum(d1,d2); ( C) sum(d1,d2); ( D) sum(d1,d2); 39 关于 C+ 流,下面的表述中正确的是 ( A)利用 C+ 流能够借助于流对象进行输入输出 ( B)利用 C+ 流只能进行格式化 输入输出 ( C)利用 C+ 流只能借助于 cin 和 cout 进行输入输出 ( D)利用 C+ 流只能使用运算符 和 这四个运算符只能被重载为类的非静态成员函数,其他的可以被友元重载,主要是
6、因为其他的运算符重载函数都会根据参数类型或数目进行精确匹配,这四个不具有这种检查的功能,用友元定义就会出错,所以本题选择 B。 26 【正确答案】 D 【试题解析】 软件方面的可重用性是通过继承来实现的, A选项正确。派生类的构造函数负责调用基类的构造函数, B选项正确。虚基类解决了由多继承产生的二义性问题,所以 C选项正确。派生类可以继承基 类的私有成员,但是不能直接访问,所以 D选项错误。 27 【正确答案】 C 【试题解析】 本题考查派生类定义时使用的关键字,三种继承方式分别为private、 public、 protected,而 C选项为静态声明关键字,故选择 C。 28 【正确答案
7、】 A 【试题解析】 本题考查派生类对基类成员的访问属性,派生类保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,所以派生类 YY总共有 3个保护成员, C选项正确。 29 【正确答案】 D 【试题解析】 在类体中定义的成员函数 , C+系统会自动将它们作为内联函数处理,而在类外定义的成员函数,系统并不把它们默认为内联函数,所以 SetPrice不是内联函数, SetPrice的形参 val具有默认值 5.8,类体中有两个 GetPrice,所以这是对 GetPrice 函数进行了重载, D选项错误。 30 【正确答案】 B 【试题解析】 拷贝构造函数,是一种特殊的构造函数,它
8、由编译器调用来完成一些基于同一类的其他对象的构建及初始化。拷贝构造函数要调用基类的拷贝构造函数和成员函数。本题中调用 fun函数时调用了一次复制构造函数,函数返回执行 x=fun(y)时又调用了一次复制构造函数,所以总共 2次。 B选项正确。 31 【正确答案】 C 【试题解析】 本题考查构造函数的应用,题目中要求输出 “ABC ABC “,那么就需要执行两次构造函数,只有 A选择可以执行两次构造函数,所以 A选项正确。 32 【正确答案】 A 【试题解析】 定义 Bicycle bike时,执行 Wheel的构造函数输出 W,然后执行Bicycle的构造函数输出 RG,最终输出 WRG,选项
9、 C正确。 33 【正确答案】 B 【试题解析】 一个派生类同时继承两 个或者多个基类时称为多重继承,其一般形式为: class 派生类名: 继承方式 基类名 1, 继承方式 基类名 2,所以 D选项正确。 34 【正确答案】 C 【试题解析】 本题考查派生类对基类成员的访问属性,派生类无论何种继承,派生类的成员函数都不能访问基类的私有成员,所以 Circle不可访问的个数有 2个, A选项正确。 35 【正确答案】 D 【试题解析】 执行派生类构造函数的顺序是: 1、调用基类构造函数, 2、调用子对象构造函数, 3、再执行派生类析构函数,4、执行基类的析构函数,所以本题中 定义 room1时
10、,先调用基类构造函数输出A,然后执行 TV的构造函数输出 T41,而定义对象指针,并不会调用构造函数,所以什么也不输出,结果为 AT41, B 选项正确。 36 【正确答案】 B 【试题解析】 本题考查虚函数的运用,本题中定义 Dog d; Type(d)时,执行类class的 Type函数,输出 Dog,然后输出 speak,然后执行基类的 Speak函数输出Voice,最后输出 -,同理 cat输出类似,所以结果为 A选项正确。 37 【正确答案】 B 【试题解析】 本题考查模板相关知识,一 个类中存在纯虚函数,这个类不一定就是类模板。函数模板需要形式参数表,类模板中可以包含构造函数。所以
11、 C选项正确。 38 【正确答案】 D 【试题解析】 本题考查函数模板的定义和使用,编译器无法推演出 T1的类型,D选项里没有写明 T1的类型,而 sum函数需要 T1的类型去特化出一个函数能够处理 d1和 d2这两个参数的函数。其他的都可以。 39 【正确答案】 B 【试题解析】 输入输出流出了 cin和 cout还有 cerr、 clog等,所以 CD选项错误, C+ 流不只是进行格式化输入输出,所以 B选项错误 , A选项正确。 40 【正确答案】 C 【试题解析】 本题考查输入输出格式的控制,先是定义宽度为 10个字符,然后填充字符, 1234只有四个字符,所以要在左侧填充 6个 * ,即输出 *1234, B选项正确。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1