一、填空题
(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)下面函数原型声明中,(C)声明的fun()为纯虚函数。
A.void func()=0; B.virtual void func()=0;
B.virtual void func(); C.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)程序中可以说明抽象类的指针或引用。 (√)
(4)一个类中的虚函数说明不仅对基类中的同名函数有影响,而且对它的派生类中重定义的函数也有影响。 (×)
(5)在构造函数和析构函数中调用虚函数时,采用动态联编,即它们所调动的虚函数是在派生类中重