分类: C/C++
2009-08-06 13:46:08
纯虚函数是用来表示接口的。
如果一个类的成员全部都是纯虚函数,那么这个类就是抽象类,也即接口。这样的类声明不包含任何变量定义和函数定义。头文件可以在多个模块中以最低的依赖关
系共享。如果所有模块都依赖于纯虚类,那么这些模块相互之间可以在运行时替换,无需重新编译整个工程。只要你的纯虚类定义不变。
Windows的COM技术说白了就是基于纯虚函数、多态性进行二进制级的代码共享。学习COM就是要记住那一大堆的纯虚类,以及这些纯虚类代表哪些接口。
abstract class是抽象类,至少包含一个纯虚函数的类就叫做抽象类。
但是如果一个类,所有的成员都是纯虚函数,那么它和一般的抽象类在用法上是有区别的。至少Microsoft给的COM接口定义全部都是仅由纯虚函数构成的类。因此把这样的类定义叫做纯虚类也不算错。
纯虚函数和虚函数的区别在于前者不包含定义,而后者包含函数体。
那么纯虚类就是不包含任何实现(包括成员函数定义和成员变量定义。前者代表算法,后者代表结构)。不包含任何算法和结构的类叫做纯虚类,应该没有问题。
引用:如果一个类的成员全部都是纯虚函数,那么这个类就是纯虚类
引用:
说法有误!应该是"如果一个类的成员至少有一个是纯虚函数,那么这个类就是纯虚类"
试图实例化一个抽象类对象(即包括一个或多个纯虚函数的类)是一种语法错误。
chinaunix网友2009-11-29 14:11:14
如果一个类的成员全部都是纯虚函数,那么这个类就是抽象类 你第一句话就错了,应该是:只要类中有一个纯虚函数(包含或继承),该类就是抽象类!