C++的多态性是通过虚函数(virtual function)和动态绑定(dynamic binding)实现的。在运行时,程序会根据对象的实际类型来调用相应的函数实现,这就是运行时绑定。
要实现运行时绑定,你需要遵循以下步骤:
- 在基类中声明虚函数:在基类中,使用关键字
virtual
声明一个成员函数,这样派生类就可以重写这个函数。
class Base { public: virtual void show() { cout << "Base class show function" << endl; } };
- 在派生类中重写虚函数:在派生类中,使用相同的函数签名重写基类中的虚函数。
class Derived : public Base { public: void show() override { cout << "Derived class show function" << endl; } };
- 使用基类指针或引用调用虚函数:通过基类的指针或引用调用虚函数时,实际调用的函数实现取决于对象的实际类型。这就是动态绑定。
int main() { Base *basePtr = new Derived(); // 使用基类指针指向派生类对象 basePtr->show(); // 运行时根据对象的实际类型调用相应的函数实现 delete basePtr; return 0; }
在这个例子中,basePtr
是一个指向Derived
类对象的基类指针。当我们调用basePtr->show()
时,程序会根据basePtr
指向的实际对象类型(即Derived
类)来调用show
函数。因此,输出结果为Derived class show function
。