過載 重寫(覆蓋) 隱藏(重定義)

2021-09-23 15:31:38 字數 1658 閱讀 1101

1)過載要求:函式名相同,引數不同(個數、型別)、常函式也可以作為過載判斷。注意返回值不是過載的判斷標準。 (

2)重寫(即覆蓋)要求:要求基類函式為虛函式,且基類函式和派生類函式名、引數等相同。 (

3)隱藏(即重定義)要求:子類重新定義父類中有相同名稱的非虛函式(引數列表可以不同)。 (

4)重寫和隱藏都是發生在基類和子類中。

#include "stdafx.h"

#include /*-------------------------

// 過載

-------------------------*/

class overload;

~overload(){};

void displaynumtype(int)

void displaynumtype(short)

void displaynumtype(double)

void displaynumtype(int, double)

void displaynumtype(double, int)

void displaynumtype(int) const

};int main()

結果顯示:

number is int

number is short

number is double

number1 is int, number2 is double

number1 is double, number2 is int

number is int and function is const

請按任意鍵繼續. . .

#include "stdafx.h"

#include /*-------------------------

// 覆蓋

-------------------------*/

class a

};class b : public a

void display1()

};int main()

結果顯示:

this is derived

this is derived

this is derived

請按任意鍵繼續. . .

至於為什麼a->display1() 會出現錯誤?

因為display1()不是a的成員。

從上面的**可以看出,覆蓋(重寫)主要是虛函式多型時使用,而過載也是多型的一種,兩者不一樣!

#include "stdafx.h"

#include /*-------------------------

// 隱藏

-------------------------*/

class a

};class b : public a

};int main()

結果顯示:

this is base

this is derived

請按任意鍵繼續. . .

備註:如果將b中的display注釋掉,結果顯示為:

this is base

this is derived

c 過載,重寫 覆蓋,重定義 隱藏

關於c 的過載,重寫 又稱覆蓋 重定義 又稱隱藏 來做乙個小小的總結。過載最主要是指在同一作用域下的函式名相同,引數不同的函式過載,其強調同一作用域。同名同參,不同返回值不能作為過載,編譯器會提示函式重複定義。重寫和重定義主要在體現在繼承行為中,子類對父類函式的操作。重寫是虛函式的正確用法,指子類對...

C 過載 重寫 覆蓋 重定義 隱藏

我們經常會被過載 重寫 重定義經常被我搞混,今天就專門總結區別一下。1.過載概念 過載指的都是函式過載,函式過載就是函式的一種特殊情況,c 允許在同一作用域中宣告幾個功能類似的同名函式,這些同名函式的形参列 表 引數個數 型別 順序 必須不同,常用來處理實現功能類似資料型別不同的問題。2.構成過載的...

函式過載 重寫(覆蓋)和重定義(隱藏)

過載 overload 在c 程式中,可以將語義 功能相似的幾個函式用同乙個名字表示,但是函式引數不同,即構成函式過載。1 相同的範圍 在同乙個類或域中 2 函式名稱相同 3 函式引數不同 引數型別 引數個數 引數順序 4 不考慮返回型別 5 不考慮virtual關鍵字 重寫 又叫覆蓋,overri...