c 之 過載 重寫 重定義

2021-09-07 09:45:19 字數 938 閱讀 3729

函式過載:

必須在同乙個類中進行;

子類無法過載父類的函式,父類同名函式將被子類名稱覆蓋;

過載是在編譯期間根據引數型別和個數決定函式的呼叫(靜態聯編)。

函式重寫與重定義:

重寫:必須發生在基類和派生類之間,並且父類與子類的函式必須有完全相同的函式原型;

使用virtual關鍵字宣告之後能夠產生多型(如果不使用virtual,那叫重定義);

多型是在執行期間根據具體物件的型別決定函式呼叫(動態聯編)。

**分析:

1 #include2

using

namespace

std;34

class

parent

10virtual

void fuc(int

i)11

14virtual

void fuc(int i,int

j)15

1819

};20

class child1 : public

parent

2127

virtual

void fuc(int i, int j,int

k)28

31};

3233

34int

main()

35

報錯如下:

前面已經說過,子類無法過載父類函式,並且,子類同名函式會覆蓋父類函式,所以,子類c1訪問fuc函式,是沒有引數的,編譯器在child1中找到了fuc函式的名字,就不會去父類再找了,而child1類中沒有提供無引數的fuc函式過載,所以報錯,要想訪問父類的無參fuc函式,可以加域作用符:

c1.parent::fuc();

C 之過載重寫重定義

概念 函式有同樣的名稱,但是引數列表不相同的情形,這樣的同名不同引數的函式之間,互相稱之為過載函式。基本條件 注意 概念 也稱為覆蓋,子類重新定義父類中有相同名稱和引數的虛函式,主要在繼承關係中出現。基本條件 注意 驗證程式 123 4567 891011 1213 1415 1617 1819 2...

C 過載重寫重定義

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

C 過載 重寫 重定義

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