一、填空题
(1)C++的两种联编方式为: 静态 联编和 动态 联编。
(2)C++支持两种多态性,静态联编所支持的多态性被称为 编译时的多态性 、动态联编所支持的多态性被称为 运行时的多态性 。
(3)重载函数在编译时表现出多态性,就是 静态 联编;而虚函数则在运行时表现出多态性是 动态 联编。
(4)为了区分重载函数,把一个派生类中重定义基类的虚函数称为 覆盖 。
(5)如果派生类与基类的虚函数仅仅返回类型不同,其余相同,则C++认为是 使用不恰当的虚函数 。
(6)在构造函数和析构函数中调用虚函数时,采用 静态 联编。
(7)纯虚函数的定义是在虚函数定义的基础上,再让函数等于 0 。
(8)对于包含有纯虚函数的类被称为 抽象类 。
二、选择题(至少选一个,可以多选)
(1)用关键字( A )标记的函数被称为虚函数。
A. virtual
B. private
C. public
D. protected
(2)在C++中,要实现动态联编,必须使用( D )调用虚函数。
A. 类名
B. 派生类指针
C. 对象名
D. 基类指针
(3)下列函数中,可以作为虚函数的是( BD )。
A. 普通函数
B. 非静态成员函数
C. 构造函数
D. 析构函数
(4)在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( B )。
A. 不同
B. 相同
C. 相容
D. 部分相同
(5)使用虚函数保证了在通过一个基类类型的指针(含引用)调用一个虚函数时,C++系统对该调用进行( A ),但是,在通过一个对象访问一个虚函数时,使用( B )。
A. 动态联编
B. 静态联编
C. 动态编译
D. 静态编译
(6)下面函数原型声明中,( B )声明的func()为纯虚函数。
A. void func()=0;
B. virtual void func()=0;
C. vitual void func();
C. vitual void func();
D. virtual void func(){};
(7)若一个类中含有纯虚函数,则该类称为( C )。
A. 基类
B. 虚基类
C. 抽象类
D. 派生类
(8)假设Myclass为抽象类,下列声明( CD )是错误的。
A. Myclass& func(int);
B. Myclass * pp;
C. int func(Myclass);
D. Myclass Obj;
(9)下面描述中,( BD )是正确的。
A. 虚函数是没有实现的函数
B. 纯虚函数的实现是在派生类中定义
C. 抽象类是只有纯虚函数的类
D. 抽象类指针可以指向不同的派生类
三、判断题
(1)抽象类中只能有一个纯虚数。 ( 错 )
(2)构造函数和析构函数都不能说明为虚基数。 ( 错 )
(3)程序中可以说明抽象类的指针或引用。 ( 对 )