過載、覆蓋、隱藏
1 c++過載的發生條件
引數列表不同:(引數個數、順序、型別)
2 extern「c」處理
3 隱式型別轉換導致過載函式產生二義性
void output(int x)
void output(float x)
output(0.5)
因為程式的隱式轉換,編譯器不知道要呼叫哪個函式
4、過載覆蓋、隱藏
過載的條件:同乙個類中,引數列表不同
覆蓋的條件:父子類中,引數列表完全相同,有virtual關鍵字,多型性(父類指標指向子類)
隱藏條件兩種情況:
<1> 函式名相同的情況下,子類基類的引數列表不同,此時無論父類的函式有沒有virtual關鍵字,都會有隱藏
<2> 函式名相同的情況下,父類函式沒有virtual關鍵字
5、子類呼叫父類
class base
;class derived : public base
;void test(void)
// 正確寫法
class derived : public base
};
6、引數預設值
<1>、注意只能在函式的宣告中預設
void foo(int x=0, int y=0); // 正確,預設值出現在函式的宣告中》
<2>、如果函式有多個引數,引數只能從後向前挨個兒預設
如正確的示例如下:
void foo(int x, int y=0, int z=0);
錯誤的示例如下:
void foo(int x=0, int y, int z=0);
<3> 當心二義性
#include void output( int x);
void output( int x, float y=0.0);
void output( int x)
void output( int x, float y)
void main(void)
7、運算子過載
運算子與普通函式在呼叫時的不同之處是:對於普通函式,引數出現在圓括號內;
而對於運算子,引數出現在其左、右側
過載 覆蓋 隱藏
學習c 些許時間了,隨便寫點東西吧。過載 覆蓋 隱藏 1.過載 相同作用域,函式名相同,引數不同,virtual關鍵字可有可無。2.覆蓋 不同作用域,函式名相同,引數相同,有virtual關鍵字。3.隱藏 一般是父類和子類之間,函式名相同,引數不同時,不管有沒有virtual關鍵字都會導致隱藏。函式...
覆蓋,隱藏,過載
1.過載 覆蓋與隱藏 1 過載 成員函式具有以下的特徵時發生 過載 a 相同的範圍 同乙個類中 b 函式的名字相同 c 引數型別不同 不能進行隱式型別轉換 d virtual關鍵字可有可無 2 覆蓋 也叫 繼承 指派生類函式覆蓋基類函式,特徵是 a 不同的範圍 分別位於基類與派生類中 b 函式名字相...
覆蓋,過載,隱藏
覆蓋 重寫 過載,隱藏這三者的概念很容易混淆,弄清楚這三者的區別與聯絡是有必要的.覆蓋 重寫 override,過載 overload,多型 polymorphis函式名字相同 引數不相同 引數個數或引數型別不同 相同作用域 virtual關鍵是可有可無 函式名字相同 引數相同 引數個數和引數型別都...