D)静态数据成员可以直接用类名调用
14、下面对于友元函数描述正确的是
A)友元函数的实现必须在类的内部定义
B)友元函数是类的成员函数
C)友元函数破坏了类的封装性和隐藏性
D)友元函数不能访问类的私有成员
15、在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是
A)派生类的对象可以赋给基类的对象
B)派生类的对象可以初始化基类的引用
C)派生类的对象可以直接访问基类中的成员
D)派生类的对象的地址可以赋给指向基类的指针
16、下面程序的运行结果为
以下是引用片段:
#include
class A
{
public:
A(){cout<
~A(){cout<
}
class B:public A
{
public:
B(){cout<
~B(){cout<
}
void main()
{
B b;
}
A)1234B)1324 C)1342 D)3142
17、下列关于虚基类的描述,错误的是
A)设置虚基类的目的是为了消除二义性
B)虚基类的构造函数在非虚基类之后调用
C)若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D)若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
18、下列关于多态性的描述,错误的是
A)C++语言的多态性分为编译时的多态性和运行时的多态性
B)编译时的多态性可通过函数重载实现
C)运行时的多态性可通过模板和虚函数实现
D)实现运行时多态性的机制称为动态绑定
19、下列运算符中,在C++语言中不能重载的是
A)* B)>= C)::D)/
20、在VC6中打开类向导,可以使用下列快捷键的是:
A)Ctrl+W B)Ctrl+O C)Ctrl+M D)以上都不对
二、填空题20%
1、设置虚基类的目的是____________,可通过____________标识虚基类。
2、带有____________的类称为抽象类,它只能作为______________来使用。
3、假定有如下定义:int x;,若要将整型变量y定义为变量x的引用,则应使用的定义
语句是_________ (2%)
4、在C语言中,编程的基本单位是_____;在面向对象程序设计,编程的基本单位为_____。
5、从一个函数模板产生的模板函数是同名的,因此编译器用_________的解决方法调用相
应函数。
6、已知int DBL(int n){return n * n;}和long DBL(long n){return n *n;}是一个函数模板的两个实例,则该函数模板的定义是_____________________________________(2分)
7、_________运算符对指定类型对象动态分配内存并返回该类型的_________。
8、下列程序定义了一实部为mal,虚部为imag的复数类complex,并在类中重载了复数的+、-操作。请将下列程序补充完整。
Class Complex
{
public:
Complex(double r=0.0,double I=0.O) _______________}
_______________operator +(Complex);
_______________operator -(Complex,Complex);
private:
double real,imag;
};
_______________operator +(Complex c)
{
return Complex(_______________);
};
_______________operator -(Complex c1,Complex c2)
{
return Complex(_______________);
}