纯虚函数与普通虚函数的区别
时间: 2023-09-05 17:11:57 浏览: 50
纯虚函数和普通虚函数都是在C++中用于实现多态性的概念。它们的区别在于:
1. 纯虚函数(Pure Virtual Function)是在基类中声明的虚函数,但没有具体的实现代码,只有函数原型。它的目的是为了让派生类必须实现这个函数。基类中至少有一个纯虚函数,则该基类被称为抽象类,不能被实例化。派生类必须提供纯虚函数的具体实现,否则派生类也会变成抽象类。
2. 普通虚函数(Virtual Function)是在基类中声明并且有默认的实现代码的虚函数。它可以在基类中有默认的行为,但派生类可以选择重写(Override)这个函数来提供自己的实现。派生类不强制必须提供对该函数的实现。
总结来说,纯虚函数是基类强制派生类必须实现的接口,而普通虚函数是基类提供默认实现但允许派生类选择性地进行重写的接口。
相关问题
讲一下普通成员函数,虚函数,纯虚函数
普通成员函数是一个在类中定义的普通函数,它可以被对象直接调用。普通成员函数没有关键字virtual,因此在继承关系中,它的调用是静态绑定的,即根据对象的类型来确定调用哪个函数。
虚函数是在基类中声明的并且带有关键字virtual的函数。它可以在派生类中被重新定义,使得派生类以不同的方式实现该函数。通过基类的指针或引用调用虚函数时,会根据指针或引用指向的对象的类型来动态绑定,即在运行时确定调用哪个函数。
纯虚函数是在基类中声明的并且没有函数体的虚函数,它只是一个接口,需要派生类来实现。派生类必须提供纯虚函数的实现才能被实例化。纯虚函数通过在基类中定义接口,约束了派生类必须提供某些特定的功能。
怎么用c++写一个含有纯虚函数的抽象类
可以使用以下方式在 C++ 中编写一个含有纯虚函数的抽象类:
```cpp
class AbstractClass { // 抽象类
public:
virtual void pureVirtualFunction() = 0; // 纯虚函数
virtual void virtualFunction() { // 虚函数
// 函数体
}
void normalFunction() { // 普通函数
// 函数体
}
};
```
在抽象类中,可以定义纯虚函数、虚函数和普通函数。其中,纯虚函数是没有函数体的虚函数,它的作用是让派生类必须实现它。如果一个类中含有纯虚函数,它就是一个抽象类,不能被实例化。派生类必须实现所有纯虚函数才能被实例化。