c++的多态如何实现?
C++中的多态性是通过虚函数(virtual function)和虚函数表(vtable)来实现的。多态性允许在基类类型的指针或引⽤上调⽤派⽣类对象的函数,以便在运⾏时选择正确的函数实现。
- 基类声明虚函数:在基类中声明虚函数,使⽤ virtual 关键字,以便派⽣类可以重写(override)这些函数。
class Shape { public: virtual void draw() const { // 基类的默认实现 } };
- 派⽣类重写虚函数:在派⽣类中重写基类中声明的虚函数,使⽤ override 关键字。
class Circle : public Shape { public: void draw() const override { // 派⽣类的实现 } };
- 使⽤基类类型的指针或引⽤指向派⽣类对象。
Shape* shapePtr = new Circle();
- 调⽤虚函数:通过基类指针或引⽤调⽤虚函数。在运⾏时,系统会根据对象的实际类型来选择调⽤正确的函数实现。
shapePtr->draw(); // 调⽤的是 Circle 类的 draw() 函数
<