函數重載允許在同一作用域內定義同名函數,但要求參數列表不同;而函數重寫允許在派生類別中定義與基底類別同名、同參數列表的函數,要求帶有override 關鍵字,返回類型和參數列表與基底類別函數完全相同。重載範例:print(int),print(double);重寫範例:Derived 類別中的 foo() 重寫了 Base 類別中的 foo()。
C 語言標準對函數重載與重寫的規範
##函數重載
重載允許在同一個作用域內使用相同名稱定義多個函數,但其參數清單必須不同。 C 語言標準要求函數重載遵循以下規範:範例:
void print(int x); void print(double x);
函數重寫
重寫允許在衍生類別中定義一個與基類別中同名同參數列表的函數。 C 語言標準要求函數重寫遵循以下規範:範例:
class Base { public: virtual void foo(); }; class Derived : public Base { public: override void foo() override; // 重写基类中的 foo };
實戰案例
函數重載:
#include <iostream> using namespace std; void print(int x) { cout << "int: " << x << endl; } void print(double x) { cout << "double: " << x << endl; } int main() { print(10); // 调用 int 版本的 print print(3.14); // 调用 double 版本的 print return 0; }
函數重寫:
#include <iostream> using namespace std; class Shape { public: virtual void draw() = 0; // 纯虚函数 }; class Rectangle : public Shape { public: void draw() override { cout << "Drawing a rectangle" << endl; } }; int main() { Rectangle r; r.draw(); // 调用 Rectangle 类中的重写函数 return 0; }
以上是C++ 語言標準對函式重載和重寫的規範的詳細內容。更多資訊請關注PHP中文網其他相關文章!