C++中的虚函数: 虚函数是在基类中声明并由派生类重新定义(覆盖)的成员函数。当使用指针或对基类的引用来引用派生类对象时,可以为对象调用虚函数并执行派生类的函数版本。
C++中的纯虚函数: C++中的纯虚函数(或抽象函数)是没有实现的虚函数,我们只声明了它。通过在声明中分配 0
来声明纯虚函数。
虚函数和纯虚函数的相似之处
- 这些是运行时多态性的概念。
- 原型,即两个函数的声明在整个程序中保持不变。
- 这些函数不能是全局的或静态的。
C++中虚函数和纯虚函数的区别
虚函数 | 纯虚函数 |
---|---|
虚函数是基类的成员函数,可以由派生类重新定义。 | 纯虚函数是基类的成员函数,其唯一声明在基类中提供,应在派生类中定义,否则派生类也变为抽象类。 |
具有虚函数的类不是抽象的。 | 包含纯虚函数的基类变为抽象。 |
定义在基类中给出。 | 基类中没有给出定义。 |
可以实例化具有虚函数的基类,即可以制作其对象。 | 具有纯虚函数的基类变得抽象,即它不能被实例化。 |
如果派生类不重新定义基类的虚函数,则不影响编译。 | 如果派生类不重新定义基类的虚函数,则不会出现编译错误,但派生类也会像基类一样变成抽象类。 |
所有派生类可能会或可能不会重新定义基类的虚函数。 | 所有派生类都必须重新定义基类的纯虚函数,否则派生类也像基类一样变得抽象。 |
虚函数语法
virtual<func_type><func_name>()
{
// code
}
纯虚函数语法
virtual<func_type><func_name>()
= 0;
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/266961.html