c++++中,函數重寫允許派生類覆蓋基類函數,以擴展或修改其行為。其語法為:具有相同函數名具有相同函數簽名使用override關鍵字
C++ 中函數重寫的全面指南
在 C++ 中,函數重寫允許派生類覆蓋基類中的函數。這在擴展基類功能或修改其行為時非常有用。
語法
要覆蓋基類函數,派生類中的函數必須:
與基類函數具有相同的名字
具有相同的簽名(參數列表和返回值)
使用 override
關鍵字
例如,考慮以下基類:
class Base { public: virtual void print() { std::cout << "Base class" << std::endl; } };
登錄后復制
要覆蓋 print()
函數,派生類可以使用以下語法:
class Derived : public Base { public: override void print() { std::cout << "Derived class" << std::endl; } };
登錄后復制
實戰案例
考慮一個 Shape
基類和一個 Circle
派生類:
class Shape { public: virtual double area() { return 0; } }; class Circle : public Shape { public: double radius; override double area() { return 3.14 * radius * radius; } };
登錄后復制
在 main()
函數中,我們可以使用虛方法調度調用這兩個方法:
int main() { // 創建一個圓形對象 Circle circle; circle.radius = 5; // 通過基類指針調用派生類函數 Shape* shape = &circle; double area = shape->area(); std::cout << "Area of the circle: " << area << std::endl; return 0; }
登錄后復制
輸出:
Area of the circle: 78.5
登錄后復制