C++程序设计语言 ( 第2次 ).doc
文本预览下载声明
第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.
显示全部