一、c++過載
即在同乙個類中宣告相同的函式名,但形參列表的引數型別與及引數的數目不同時,應會發生過載。包括函式過載和運算子過載。看個例子:
01
class
a;
06
07
void
fun(
int
a){};
08
09
void
fun(
int
a,
int
b){};
10
11
void
fun(
double
b){};
12
13
};
二、c++重寫
即基類中宣告為virual的函式,子類繼承相應的virtual函式,但實現了自己的方法。我們就稱為重寫(也稱覆蓋)。子類呼叫同名的函式時,需判斷呼叫的是子類從基類重寫的函式,還是在基類的函式的實現。重寫是c++多型性產生的機制,把基類中帶有virual關鍵字的函式,在子類中實現自己的版本。這叫重寫。注意與隱藏的區別之處。例子:
01
class
a;
10
11
virtual
void
fun()
12
13
18
19
};
20
21
class
b:
public
a
32
33
void
fun()
//實現基類的虛函式fun()
34
35
40
41
};
42
43
int
main()
44
45
三、c++隱藏:
對基類中不存在virual關鍵字的函式,子類繼承後,如果再次定義乙個同名函式(此時注意不是過載),不管定義的同名函式形參列表型別及個數是否相同,基類的同名函式徹底被隱藏(其實還是可以用子類物件呼叫基類隱藏函式的,見下面
)。此時呼叫子類物件中的函式時,就只能呼叫子類中定義的函式(注意此函式並不繼承自基類的同名函式,並不是所謂的重寫)。例子:
01
class
a
06
};
07
08
class
b :
public
a
14
};
15
int
main()
在上列中,用子類物件b呼叫基類隱藏函式是可以實現的:
過載 重寫(覆蓋) 隱藏
過載 同一訪問區 如類中 內被宣告的幾個具有 不同引數列 引數的型別,個數,順序不同 的 同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。隱藏 派生類的函式 遮蔽了它繼承的 基類同名函式,注意只要同名函式,不管引數列表是否相同,基類函式都會被隱藏。重寫 覆蓋 派生類中存在 同基類中函...
過載 ,覆蓋 ,隱藏 OOP多型性
過載 覆蓋 隱藏 oop多型性 include using namespace std class base void g float x void h float x class derived public base void g int x void h float x int main vo...
C 中的過載 重寫(覆蓋) 隱藏
一 過載 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual關鍵字可有可無。二 重寫 覆蓋是指派生類函式覆蓋基類函式 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual關鍵字。三 隱藏 隱藏 是指派生類的函式遮蔽了與其...