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






