C++中派生类的多态是通过虚函数和虚函数表实现的。在基类中声明一个虚函数,然后在派生类中重写这个虚函数,就可以实现多态。
具体来说,当一个指向基类的指针或引用调用一个虚函数时,实际上会调用指向派生类对象的虚函数。这是因为每个对象都有一个虚函数表,存储了该对象的虚函数地址,通过这个虚函数表可以实现动态绑定,实现多态性。
以下是一个简单的示例:
#include <iostream>
class Base {
public:
virtual void print() {
std::cout << "Base::print() called" << std::endl;
}
};
class Derived : public Base {
public:
void print() override {
std::cout << "Derived::print() called" << std::endl;
}
};
int main() {
Base* basePtr = new Derived();
basePtr->print(); // 输出 Derived::print() called
delete basePtr;
return 0;
}
在上面的示例中,基类Base
中声明了一个虚函数print()
,派生类Derived
重写了这个虚函数。在main()
函数中,我们用一个指向基类对象的指针basePtr
指向一个派生类对象,并调用print()
函数,最终输出的是Derived::print() called
,实现了多态。