曲径通幽论坛
标题:
抽象基类与纯虚函数
[打印本页]
作者:
easy
时间:
2013-11-18 00:18
标题:
抽象基类与纯虚函数
抽象基类简称为 ABC ( abstract base class )。它将要派生出来的类的共性抽象出来,并它们放到一个 ABC 中,以后就可以从该 ABC 派生出具体的类来。比如对于椭圆和圆,尽管圆是一种特殊的椭圆,但一般不会用椭圆作为基类,然后派生出圆这个类,因为这比较笨拙。例如,对于圆,只需要一个半径就可以描述其大小和形状;而椭圆,则需要长半轴,短半轴这些参数。虽然圆的构造函数可以通过将同一个值赋值给椭圆的长半轴和短半轴,以形成一个圆,但这将造成信息冗余,另外对于椭圆的一些计算方法,对圆来说也没有什么实际意义。一种解决方法,就是将圆和椭圆的共性抽象出,放在一个 ABC 中,接着就可以从这个 ABC 里派生出椭圆类和圆类,并为每个类添加所需的成员。
ABC 是一种包含纯虚函数的基类,不能用这种基类直接创建对象;也就是包含纯虚函数的类只用作基类。
要成为真正的 ABC,必须至少包含一个纯虚函数,纯虚函数是这样定义的:
virtual type func_name (parameter-list) = 0;
=0
使虚函数成为了纯虚函数,也指出了类是一个抽象基类,在类中可以不定义 func_name() 函数。
总之,ABC 描述的是至少使用一个纯虚函数接口,从 ABC 派生出的类将根据派生类的具体特征,使用常规虚函数来实现这种接口。
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2