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