C 函式過載 重寫 重定義

2021-10-02 09:16:51 字數 1048 閱讀 2139

c++中經常會提到過載,除了過載,還有重寫,重定義,下面對這三個概念逐一進行區分

1 過載

函式過載是同一定義域中(即同乙個類中)的同名函式,但形參的個數必須不同,包括引數個數,型別和順序,不能僅通過返回值型別的不同來過載函式

#include

using namespace std;

class box

void func(int a, int b){} // 引數個數不同

void func(int c, int b, int a){} // 引數順序不同

int func(int a, int b, int c){} // **返回值型別不同,不能說明是過載函式**

int main()

2 重寫

在父類和子類中,並且函式形式完全相同,包括返回值,引數個數,型別和順序,

父類中有vietual關鍵字,可以發生 多型

#include

using namespace std;

class box

class squarebox: public box

int main()

3 重定義

重定義和函式重寫類似,不同的地方是重定義父類中沒有vietual關鍵字,不可以發生 多型

#include

using namespace std;

class box

class squarebox: public box

int main()

4 函式過載二義性

當函式過載遇上預設引數時,會出現二義性

如下**所示:

#include

using namespace std;

class box

void func(int a, int b)

int main()

{box box;

box.func(1, 2); //此函式不知道呼叫上面哪乙個

return 0;

C 函式重定義 過載 重寫

c 的重寫,過載,重定義 1.重寫 override 又稱覆蓋 父類與子類之間的多型性。子類重新定義父類中有相同名稱和引數的虛函式。1 被重寫的函式不能是 static 的。必須是 virtual 的,或者是 override 的 即函式在最原始的基類中被宣告為 virtual c 中沒有 over...

C 過載重寫重定義

includeusing namespace std 函式過載 必須在同乙個類中進行 子類無法過載父類的函式,父類同名函式將被名稱覆蓋 過載是在編譯期間根據引數型別和個數決定函式呼叫 函式重寫 必須發生於父類和子類之間 並且父類和子類中的函式必須有完全相同的原型 使用virtual宣告之後能夠產生多...

C 過載 重寫 重定義

指函式名相同,但是它的參數列列個數或順序,型別不同。但是不能靠返回型別來判斷。1 相同的範圍 在同乙個作用域中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。5 返回值可以不同 是指派生類重新定義基類的虛函式,特徵是 1 不在同乙個作用域 分別位於派生類與基類 2 函式名字相同...