[原創]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 也叫做覆蓋。子類重新定義父類中有相同名稱和引數的虛函式。函式特徵相同。但是具體實現不同,主要是在繼承關係中...