C 函式重寫 過載 小結

2021-05-23 20:31:27 字數 1078 閱讀 2390

[原創]c++函式重寫、過載 小結

1、c++函式重寫

1)被重寫的函式不能是static的。必須是virtual的,或者是override的(即函式在最原始的基類中被宣告為virtual,c++中沒有override)。

2)重寫函式必須有相同的型別,名稱和引數列表

3)重寫函式的訪問修飾符可以不同。儘管virtual是private的,派生類中重寫改寫為public,protected也是可以的(這點與c#完全不同)

2、c++函式過載

1)直觀的理解,過載就是乙個名稱相同的函式有不同版本(引數列表不同:引數型別,順序)。

2)構成過載函式集的函式必須在同乙個域。例如,試圖在基類和派生類中的同名函式集中構成乙個過載集,將引發錯誤(函式呼叫時,編譯錯誤),事實上,派生類中的新函式「版本」隱藏了基類中定義的函式(隱藏在c++很少提及,但存在)

下面是一段很**的程式(為了說明問題),在實際應用中應該避免出現。

#include

#include

class base

void say()

public:

void exec()

void f1(int a,char b)

void f1(int b,int a)

};

class derivea:public base

void f1(int a,int b,int c)

protected:

void say()

};

int main()

C 函式重寫 過載幾點小結

原文 http hi.baidu.com pweiwen blog item ac4bbf161123c81e972b435f.html 1 c 函式重寫 1 被重寫的函式不能是static的。必須是virtual的,或者是override的 即函式在最原始的基類中被宣告為virtual,c 中沒有...

C 中函式重寫 過載與重寫的區別

過載 靜態多型 1 同一作用域 2 子類無法過載父類函式,父類同名函式將被隱藏 3 過載是在編譯期間根據引數型別和個數決定的 重寫 動態多型 1 在子類中定義與父類中原型相同的函式 2 函式重寫只發生在父類與子類之間 3 使用virtual關鍵字申明後能產生多型 4 執行期間根據具體物件型別決定呼叫...

函式過載和重寫

過載overload 是函式名相同,引數列表不同 過載只是在類的內部存在。但是不能靠返回型別來判斷。函式過載發生在同一作用域內,即在同乙個類裡有多個同名函式,引數列表不同。重寫override 也叫做覆蓋。子類重新定義父類中有相同名稱和引數的虛函式。函式特徵相同。但是具體實現不同,主要是在繼承關係中...