文档详情

C++程序设计语言 ( 第2次 ).doc

发布:2017-07-19约4.69千字共11页下载文档
文本预览下载声明
第2次作业 一、单项选择题(本大题共40分,共 20 小题,每小题 2 分) 1. 下列代码中,( )能够正确第将类A申明为类B的友元类。 A. class B { friend class A;} B. class B { friend A;} C. class A { friend class B;} D. class A{ friend B;} 2. 类A使用虚基类的方式,从类B派生而来。下面( )准确定义了这种继承方式。 A. virtual class B{}; virtual class A : public B {}; B. virtual class B{}; class A : virtual public B {}; C. class B{}; class A : virtual public B {}; D. virtual class B{}; class A : public B {}; 3. 下面代码执行结束后的输出是( ) #include using namespace std; class A{ private: int x; public: A(int a){x=a;} A(A a){x=a.x;} void show(){cout “x:” x “ “;} }; void main(){ A a1(5); a1.show(); A a2(a1); a2.show(); } A. ?x:5 x:5 B. x:5 C. 编译有错 D. 以上答案都不对 4. 声明类模板时,形参具有类型或值的默认实参值,那么在实例化类模板时( )。 A. B. 必须指定实参值 C. 可以使用默认参数和指定参数 D. 只能指定实参或者只能使用默认实参值 5. 如果类A是类B的基类,两个类中都有同名的成员函数fun,下列( )能够正确调用到A类的成员函数fun。 A. B *b; b-fun(); B. B b; B br=b; br.fun(); C. B b; b.A::fun(); D. B b; b.fun(); 6. 有类的定义如下: class A{ private: int x,y; public: A(int m,int n){x=m;y=n;} }; Class B{ private: int z; A a; public: B(int m); }; 下列( )是正确的B类构造函数实现代码。 A. B::B(int m) : a(m), z(m){ } B. B::B(int m) : a(),z() { } C. B::B(int m) : a(m,m), z(m){ } D. B::B(int m) : a=(m,m), z=m { } 7. 使用类模板,就必须显式指定模板( )。 A. B. 实参 C. 形参 D. 类型 8. 下列( )能够正确地申明友元函数,让函数fun能够访问类A的私有成员。 A. void fun() friend class A; B. Friend class A{private: int i; void fun();}; C. class A{private: int i; friend fun();}; D. class A{private: int i; friend void fun();}; 9. 下列关于类的定义中正确的是( )。 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;}; 10. 下列代码中,( )能够通过一个对象数组元素访问成员函数。 A. (arr[2])-show(); B. (*arr[2]).show(); C. (arr[2]).show(); D. (*(arr+2)).show(); 11. 下列关于虚函数的说法中,( )项是错误的。 A. 构造函数不能申明为虚函数 B. 析构函数不能申明为虚函数 C. 如果要使用虚函数来实现多态,必须满足类型兼容原则 D. 通常将需要派生类重写的函数申明为虚函数 12. 下面( )项能够正确地申明重载“++”运算符的后缀形式为类A的成员函数。 A. A operator ++(int); B. A operator ++(); C. A operator ++(0); D. A operator ++(A,int); 13.
显示全部
相似文档