1、第 2 次作业一、单项选择题(本大题共 50 分,共 20 小题,每小题 2.5 分)1. 类 A 从类 B 派生而来,下面( )可以在类 A 的构造函数中调用基类 B 的构造函数A. class A : public B public: A(int i)B(i);B. class A : public B public: A(int i):B(i);C. class A : public B public: A(int i):B(int i);D. class A : public B public: A(int i)B(int i);2. C+的函数有函数头和函数体两部分组成,下面所列的函
2、数头书写格式中不正确的是( )。A. main(int a,int b)B. main(int a,int b1)C. main(int a=0,int b)D. main(int a=2,int b=3)3. 下列存取控制符中,( )能够限定类外代码不能访问被它修饰的成员。A. private B. publicC. protectedD. private 和 protected 都可以4. 下列( )能够正确地申明友元函数,让函数 fun 能够访问类 A 的私有成员。A. void fun() friend class A;B. Friend class Aprivate: int i;
3、void fun();C. class Aprivate: int i; friend fun();D. class Aprivate: int i; friend void fun();5. 类 A 的定义代码如下: class A public: A(int i)this-i=i; setI(int i)this-i=i; private: int i; ; 下列代码中,( )能够正确申明类 A 的常对象,并给 i 成员赋初值。 A. const A a; a.setI(1);B. const A a(1);C. A a const; a.setI(1);D. A a(1) const;6
4、. 下列关于类的定义中正确的是( )。A. class C int a,b;B. class C int a; int b;C. class C int a=10; int b;D. class C int a; int b;7. 下列关于派生类在生成时所经历的三个阶段的描述中,错误的是( )。A. 派生类可以定义与基类同名的成员函数,如果参数不一样,那么可以和基类的成员函数一起成为重载函数。B. 派生类首先应该吸收从基类继承而来的成员变量和成员函数C. 派生类可以根据自己的需要,重写基类的成员函数D. 派生类也可以有自己特有的成员变量和成员函数8. 如果类 A 有成员函数 fun;类 B 和
5、类 C 使用虚基类的方式从类 A 公有派生,并且类 B 和类 C 并没有重写 fun 函数;类 D 是从类 B 和类 C 公有继承而来,也没有重写 fun 函数。那么下面的代码中,( )能够正确调用 fun 函数。A. D d; d.fun();B. D d; d.B:fun();C. D d; d.C:fun();D. 以上三个都可以9. 下面程序的运行结果是( )。 #include #include using namespace std; int main() char a100=“AB“,b100=“LMNP“; int i=0; strcat(a,b); while(ai+) bi
6、=ai; coutx = x; void show() cout x=x;D. *this.x=x;16. 下列说法正确的是( )A. 编译器构建的默认构造函数是浅拷贝B. 编译器构建的默认构造函数是深拷贝C. 深拷贝不需要递归处理到对象成员D. 深拷贝只需要递归处理到对象成员的第二个层次就够了,没必要继续递归17. 下列的代码运行时不会发生拷贝构造函数调用的是( )。A. Point p1(1,2); Point p2(p1)B. Point p1(1,2); Point p2; p2=p1;C. void printPoint(Point p)D. Point createPoint()P
7、oint p; return p;18. 下列程序代码的输出是( ) #include using namespace std; class A private: int x; static int counter; public: A(int a) x = a; counter+; static void showCounter() cout counter endl; ; int A:counter = 0; void main() A a(1), b(2), c(3); A:showCounter(); A. 1B. 2C. 3D. 419. 类 A 是类 B 的基类,下面( )项表示的
8、代码执行完成后,不能够正确调用B 类的析构函数。A. B *p=new B(); delete p;B. A *p=new B(); delete p;C. A a; B b; a=b;D. A *a; B b; a=20. 下列关于类 A 的构造函数的定义中,正确的是( )。A. A()B. A(int b,c)x=b;y=c;C. void A(int b, int c)x=b; y=c;D. A()二、判断题(本大题共 50 分,共 20 小题,每小题 2.5 分)1. 在类内部定义的 private 和 protected 的数据成员不能被类外代码访问,定义 public 的数据成员可
9、以被类外代码访问。2. 嵌套的异常抛出后,捕获异常的 catch 语句块不管是内层还是外层,都是同时判断是够满足异常的类型,然后再决定哪个 catch 语句块处理异常。3. 在类模板设计中,不能重载()操作符,也就是不能用函数对象。4. 相比于数组,STL 容器的大小是可以自动变化的。5. 静态数据成员并不是对象的属性,而是整个类的属性,所以它又称为类属性。6. find 函数在对容器元素操作时,会修改容器中元素的值。7. Vector 通过 push_back 函数添加元素到容器中,那么容器的 size 会增加。8. void fun();表示的是函数 fun 在程序运行中不会抛出任何异常。9. 常数据成员只针对对象成员,不针对基本数据类型成员。也就是说基本数据类型不能作为常数据成员。10. 为了消除多重继承带来的二义性问题,除了使用作用域限定符:之外,还可以使用虚基类的方式。11. 重载多态包括了函数重载和运算符重载。12. 虚函数不能被子孙类传递,也就是说基类如果有虚函数,它的直接派生类也具有这个同名的虚函数,但是间接派生类就不具有。13. 使用公有继承来生成派生类时,基类的公有成员在派生类中以保护成员的方式存在。14. 如果析构函数是纯虚函数,那么它必须被实现,因为派生类的析构函数需要调用它。
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。