C++

1、什么纯虚函数?

 

首先,二者申明不一样。

virtual void test(void);//虚函数  

virtual void test(void) = 0;//纯虚函数


其次,如果一个类包含了一个纯虚函数(哪怕只有一个是纯虚函数),那么它就是一个抽象类——就是不能生成具体的对象!但如果类中只包含虚函数,那么是可以定义具体的对象的!



但二者又有一个相同点:都必须在子类中覆盖申明的虚函数!而不管是虚还是纯虚!

 

使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。 如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virtual 函数名=0 我们把这样的函数(方法)称为纯虚函数。

也就是说,虚函数 ,子类可以不重写,直接继承父类 的方法来使用,也可以重写

但是 纯虚函数是子类是必须重写了才可以使用

 

实际上我个人认为纯虚函数的引入,是出于两个目的,

1.为了安全.因为避免任何需要明确但是因为不小心而导致的未知的结果.

提醒子类去做应做的实现.

2.为了效率,不是程序执行的效率,而是为了编码的效率

 

 


虚函数可是实现方法
纯虚函数没有函数体,也就是不能实现方法,只能给后面的派生类供声明,后面跟着=0;
有纯虚函数一般为抽象基类