在 C++ 中,虚函数(Virtual Function)和纯虚函数(Pure Virtual Function)是面向对象编程中的重要概念,用于实现多态性和抽象类。
1. 虚函数:
- 虚函数是在基类中声明为虚拟的成员函数,可以被子类重写。通过使用虚函数,可以实现运行时多态性。
- 在基类中通过将函数声明为虚函数,可以使子类对该函数进行覆盖(Override)。在运行时,根据对象的实际类型来调用相应的函数。
- 声明虚函数的语法是在函数声明前面加上 `virtual` 关键字。子类中可以选择性地重写这些虚函数。
class Base {
public:
virtual void show() {
cout << "Base class" << endl;
}
};
class Derived : public Base {
public:
void show() override {
cout << "Derived class" << endl;
}
};
2. 纯虚函数:
- 纯虚函数是在基类中声明为纯虚拟的虚函数,没有具体的实现,在基类中只有声明,不需要定义函数体。
- 包含纯虚函数的类称为抽象类(Abstract Class),不能被实例化,只能作为基类来派生其他类。
- 派生类必须实现纯虚函数,否则它们也会成为抽象类。
class AbstractBase {
public:
virtual void show() = 0; // 纯虚函数
};
class ConcreteDerived : public AbstractBase {
public:
void show() override {
cout << "ConcreteDerived class" << endl;
}
};
总结:
- 使用虚函数可以实现运行时多态性,允许在运行时动态绑定函数调用。
- 使用纯虚函数可以定义抽象接口,强制派生类实现特定的函数,实现接口的统一规范。