C 過載 重寫和重定義

2021-08-26 20:28:36 字數 931 閱讀 8134

函式過載(overload)

函式過載是指在乙個類中宣告多個名稱相同但引數列表不同的函式,這些的引數可能個數或順序,型別不同,但是不能靠返回型別來判斷。特徵是:

(1)相同的範圍(在同乙個作用域中);

(2)函式名字相同;

(3)引數不同;

(4)virtual 關鍵字可有可無(注:函式過載與有無virtual修飾無關);

(5)返回值可以不同;

class aa

void print(int x )

};

函式重寫(也稱為覆蓋 override)

函式重寫是指子類重新定義基類的虛函式。特徵是:

(1)不在同乙個作用域(分別位於派生類與基類);

(2)函式名字相同;

(3)引數相同;

(4)基類函式必須有 virtual 關鍵字,不能有 static 。

(5)返回值相同,否則報錯;

(6)重寫函式的訪問修飾符可以不同;

class aa

};class bb : public aa

};

重定義(也稱隱藏)

(1)不在同乙個作用域(分別位於派生類與基類) ;

(2)函式名字相同;

(3)返回值可以不同;

(4)引數不同。此時,不論有無 virtual 關鍵字,基類的函式將被隱藏(注意別與過載以及覆蓋混淆);

(5)引數相同,但是基類函式沒有 virtual關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆);

class aa

};class bb : public aa

};

C 過載重寫重定義

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

C 過載 重寫 重定義

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

C 過載 重寫 重定義

一 過載 overload 指函式名相同,但是它的參數列列個數或順序,型別不同。但是不能靠返回型別來判斷。1 相同的範圍 在同乙個作用域中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。5 返回值可以不同 二 重寫 也稱為覆蓋 override 是指派生類重新定義基類的虛函式,...