Chinaunix首页 | 论坛 | 博客
  • 博客访问: 293550
  • 博文数量: 81
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 952
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-31 22:05
文章分类

全部博文(81)

文章存档

2011年(1)

2010年(1)

2009年(79)

我的朋友

分类: C/C++

2009-08-06 13:46:08

纯虚函数是用来表示接口的。

如果一个类的成员全部都是纯虚函数,那么这个类就是抽象类,也即接口。这样的类声明不包含任何变量定义和函数定义。头文件可以在多个模块中以最低的依赖关 系共享。如果所有模块都依赖于纯虚类,那么这些模块相互之间可以在运行时替换,无需重新编译整个工程。只要你的纯虚类定义不变。

Windows的COM技术说白了就是基于纯虚函数、多态性进行二进制级的代码共享。学习COM就是要记住那一大堆的纯虚类,以及这些纯虚类代表哪些接口。

abstract class是抽象类,至少包含一个纯虚函数的类就叫做抽象类。

但是如果一个类,所有的成员都是纯虚函数,那么它和一般的抽象类在用法上是有区别的。至少Microsoft给的COM接口定义全部都是仅由纯虚函数构成的类。因此把这样的类定义叫做纯虚类也不算错。

纯虚函数和虚函数的区别在于前者不包含定义,而后者包含函数体。

那么纯虚类就是不包含任何实现(包括成员函数定义和成员变量定义。前者代表算法,后者代表结构)。不包含任何算法和结构的类叫做纯虚类,应该没有问题。

引用
如果一个类的成员全部都是纯虚函数,那么这个类就是纯虚类


引用

说法有误!应该是"如果一个类的成员至少有一个是纯虚函数,那么这个类就是纯虚类"


试图实例化一个抽象类对象(即包括一个或多个纯虚函数的类)是一种语法错误。

阅读(3333) | 评论(1) | 转发(0) |
0

上一篇:虚函数

下一篇:多态性

给主人留下些什么吧!~~

chinaunix网友2009-11-29 14:11:14

如果一个类的成员全部都是纯虚函数,那么这个类就是抽象类 你第一句话就错了,应该是:只要类中有一个纯虚函数(包含或继承),该类就是抽象类!