C++中的虚函数是实现运行时多态性的关键,其具体实现方法如下:
1、在基类中使用virtual关键字声明虚函数:
class Base {
public:
virtual void func() { ... }
};
2、派生类可以重写基类的虚函数
class Derived extends Base {
public:
virtual void func() { ... }
};
3、通过基类的指针或引用调用虚函数,会执行实际所指派生类的实现
Base* b = new Derived();
b->func(); // Calls Derived::func()
4、重写基类的虚函数时,可以使用override关键字检查是否正确重写,如果Derived::func()不是正确重写Base::func(),编译器会报错。
class Derived extends Base {
public:
virtual void func() override { ... }
};
5、派生类可以选择不重写基类的虚函数,这时调用基类
class Derived extends Base {
};
Base* b = new Derived();
b->func(); // Still calls Base::func()
6、基类可以声明纯虚函数,这要求所有派生类都重写该虚函数,
如果派生类为重写,则也变成抽象类。
class Base {
public:
virtual void func() = 0; // Pure virtual function
};
以上就是C++虚函数的具体实现方法和机制。利用虚函数可以实现运行时动态绑定,模板方法设计模式等。它增强了程序的扩展性,是C++实现面向对象和继承的关键特征之一。