首頁 >後端開發 >C++ >C++ 語言標準對函式重載和重寫的規範

C++ 語言標準對函式重載和重寫的規範

WBOY
WBOY原創
2024-04-21 09:09:01893瀏覽

函數重載允許在同一作用域內定義同名函數,但要求參數列表不同;而函數重寫允許在派生類別中定義與基底類別同名、同參數列表的函數,要求帶有override 關鍵字,返回類型和參數列表與基底類別函數完全相同。重載範例:print(int),print(double);重寫範例:Derived 類別中的 foo() 重寫了 Base 類別中的 foo()。

C++ 语言标准对函数重载和重写的规范

C 語言標準對函數重載與重寫的規範

##函數重載

重載允許在同一個作用域內使用相同名稱定義多個函數,但其參數清單必須不同。 C 語言標準要求函數重載遵循以下規範:

    傳回類型必須相同。
  • 參數清單必須不同,即參數的數量、型別或順序。
  • const、volatile 和引用限定符可以用來區分重載的函數。

範例:

void print(int x);
void print(double x);

函數重寫

重寫允許在衍生類別中定義一個與基類別中同名同參數列表的函數。 C 語言標準要求函數重寫遵循以下規範:

    重寫函數必須帶有 override 關鍵字。
  • 傳回類型必須與基底類別函數相同。
  • 參數清單必須與基底類別函數完全相同(包括類型、順序和限定符)。
  • 衍生類別函數不得比基底類別函數的存取權限更低(即 protected 只能重寫 protected 或 public 函數)。

範例:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn