虚函数是C++面向对象编程实现多态的核心方式。
一、虚函数
在基类中使用virtual关键字标记的函数为虚函数:
class Base {
public:
virtual void func() {
//...
}
};
二、重写虚函数
派生类可以重写基类虚函数实现不同的功能:
class Derived : public Base {
public:
virtual void func() {
// 不同实现
}
};
三、多态
通过基类指针或引用调用虚函数,会执行实际派生类重写的版本:
Base* p = new Derived();
p->func(); // 调用Derived::func版本
四、纯虚函数
在基类将虚函数设置为纯虚函数,需要子类重写:
class Base {
public:
virtual void func() = 0;
};
class Derived : public Base {
public:
void func() {
// 重写纯虚函数
}
};
五、虚析构函数
析构函数通常也需要声明为虚析构函数。
六、动态绑定
虚函数调用属于动态绑定,在运行时决定调用的函数版本。
虚函数是C++实现动态多态的主要方式,是C++面向对象编程的重要特性。