二级C 重点难点分析:多态性
文章作者 100test 发表时间 2007:07:17 13:11:58
来源 100Test.Com百考试题网
1.1 虚函数机制
1.1.1 考点1:多态性的概念
多态性是指一组具有相同基本语义的方法在同一接口下能为不同的对象提供服务。多态性是面向对象的三大特性之一。在C 中,多态性表现为:同一个函数的调用,在不同的运行环境中,响应的代码不同。C 支持两种多态性:编译时的多态性和运行时的多态性。
例1.1.1 在C 中用来实现运行时多态的是( )。
A.重载函数 B.析构函数 C.构造函数 D.虚函数
答案:D
例1.1.2 从实现的角度划分,C 所支持的两种多态性分别是 时的多态性和运行时的多态性。
答案:编译
例1.1.3 在C 中,用于实现运行时多态性的是( )。
A.内联函数 B.重载函数 C.模板函数 D.虚函数
答案:D
131.2 考点2:虚函数的概念
虚函数是实现运行时多态性的基础,它使用virtual关键字,其定义形式为:
virtual <类型> <函数名> (<参数表>)
虚函数在不同的派生类中可能存在不同的实现,通过重载基类的虚函数,可以生成该函数在派生类中的专门版本,如果派生类中没有重载该虚函数,则使用基类的函数版本。
在C 中,虚函数可以是友元函数,但不能是静态成员。虚函数的重定义函数,无论是否使用virtual关键字,仍然是虚函数。
警钟长鸣:虚函数和虚基类没有必然联系。
例1.1.4 下列关于虚函数的描述中,正确的是( )。
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
答案:C
1.1.3 考点3:纯虚函数与抽象类
纯虚函数是一种特别的虚函数,它没有函数的实现体部分,也没有为函数的功能提供实现的代码,它的实现版本必须由派生类给出,因此纯虚函数不能是内联函数。
纯虚函数的定义形式为:
virtual <类型> <函数名> (<参数表>) = 0.
拥有纯虚函数的类就是抽象类,抽象类不能产生类的实例。如果纯虚函数没有被重载,则派生类将继承此纯虚函数,即该派生类也是抽象类。
警钟长鸣:(1)具有纯虚函数的抽象类与虚基类没有必然联系。
(2)抽象类不能产生实例,而虚基类所对应的类本身却可以产生实例。
例13.1.5 在一个类体的下列声明中,正确的纯虚函数声明是( )。
A.virtual void vf() = 0. B.void vf(int)=0.
C.virtual int vf(int). C.virtual void vf(int) {}
答案:A
src="/ncre2/js/wxgg.js">