過載 覆蓋 隱藏

2021-09-10 04:00:31 字數 1149 閱讀 3717

過載、覆蓋、隱藏

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關鍵是可有可無 函式名字相同 引數相同 引數個數和引數型別都...