纯虚函数和虚函数的联系

Posted kaizen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了纯虚函数和虚函数的联系相关的知识,希望对你有一定的参考价值。

【1】相同点

目标一致:为了实现多态。

【2】不同点

(1)声明的区别:

1、纯虚函数的声明除过像虚函数加关键字virtual而外,还必须加 = 0;

2、声明为虚函数,为了能让这个函数在它的派生类里面被覆盖(或隐藏),这样编译器就可以通过后期绑定达到多态性。

3、声明为纯虚函数,有一种接口的规范作用。派生类必须且只能原样(同名同参)实现。这样编译器就可以通过后期绑定达到多态性。

(2)定义的区别:

1、虚函数在基类中必须实现(哪怕空操作)。派生类里面也可以不覆盖(或隐藏)。

2、纯虚函数在基类中不允许定义(也可以理解为加 = 0; 的约束),必须在其派生类里面去实现。

(3)存在的区别:

一个类中可以只有纯虚函数,也可以只有虚函数,或者两者同时存在均可。

(4)存在对一个类的作用区别:

一个类的声明中,即使有一个纯虚函数,那么这样的类叫做虚基类(或抽象类)。

这种基类不能直接声明对象,只能被继承,且派生类只有在实现其纯虚函数后才能使用。

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结

以上是关于纯虚函数和虚函数的联系的主要内容,如果未能解决你的问题,请参考以下文章

运算符重载如何声明为纯虚函数?

一口气搞懂《虚函数和纯虚函数》

一个例子搞懂C++的虚函数和纯虚函数

一个例子彻底搞懂C++的虚函数和纯虚函数

C++中重载加减乘除等运算符的纯虚函数中的返回类型怎么定义??运算符中参数怎么写??

关于C++的虚函数在父类的内部调用