虚函数与纯虚函数在 C++ 中的区别
C++ 中的虚函数
虚函数是在基类内定义并在派生类中重新定义的成员函数。当你使用指向基类的指针或引用来引用派生类对象时,可以调用该对象中的虚函数并执行派生类的函数版本。
C++ 中的纯虚函数
C++ 中的纯虚函数(或抽象函数)是没有实现的虚函数,我们仅仅定义它。通过在声明中分配 0 来宣告纯虚函数。
虚函数和纯虚函数之间的相似之处
- 这些是运行时多态的概念。
- 函数的原型(Declaration)在整个程序中保持不变。
- 这些函数不能是全局的或静态的。
虚函数和纯虚函数在 C++ 中的区别
虚函数 | 纯虚函数 |
---|---|
虚函数是基类的成员函数,可以在派生类中重定义。 | 纯虚函数是基类的成员函数,在基类中仅提供声明,在派生类中必须定义;否则,派生类将成为抽象类。 |
含有虚函数的类不是抽象类。 | 含有纯虚函数的基类是抽象类。 |
在基类中给出定义。 | 在基类中没有给出定义。 |
含有虚函数的基类可以被实例化,即可以创建该类的对象。 | 含有纯虚函数的基类是抽象类,即不能被实例化。 |
如果派生类不重新定义基类的虚函数,则不会影响编译。 | 如果派生类不重新定义基类的纯虚函数,则会变成抽象类,与基类相同。 |
所有派生类可以重定义或不重定义基类的虚函数。 | 所有派生类必须重新定义基类的纯虚函数,否则,派生类将成为抽象类。 |
虚函数语法:
virtual<func_type><func_name>()
{
// code
}
纯虚函数语法:
virtual<func_type><func_name>()
= 0;