繼承中的過載 隱藏

2021-10-06 16:40:39 字數 750 閱讀 8962

過載關係:

一組函式要過載,必須處於同一作用域下。而且函式名字相同引數列表不同。

class base

void show()

void show(int)

private:

int ma;

};class derive:public base

//void show()....(1)

//void show(int)....(2) //遮蔽之後再進行呼叫void show(int)就會出錯,因為過載函式要在同乙個作用域下

private:

int mb;

};int main()

1.只在基類中定義show(),那麼物件呼叫方法會呼叫基類中的函式以及過載函式,因為派生類會繼承基類的成員方法。

2.在基類中定義show以及過載,在派生類中只定義**中的(1),那麼物件呼叫方法會首先呼叫派生類中的方法,並且在同一作用域中尋找是否有符合void show(int)的過載函式,顯然不存在。此時不能呼叫基類中的void show(int),因為作用域不相同。

3.同時加上(1)和(2),那麼最後的輸出是:derive::show()

derive::show(int)

顯然首先呼叫的是派生類中的方法。

隱藏(作用域的隱藏)關係:

在繼承結構中,派生類的同名成員ba把基類的同名成員給隱藏呼叫了。

C 繼承結構中的過載與隱藏

includeusing namespace std class base void show void show int protected int ma class derive public base void show protected int mb int main derive類中沒有...

C 的過載 覆蓋 隱藏 繼承

函式過載 函式的繼承 這個不多說 子類繼承父類的公有變數 函式的覆蓋 也是重寫 關於子類修改了父類的成員函式 所以呼叫跟父類同名的成員函式 顯示的是子類的修改的函式的輸出方式 函式的隱藏 在父類和子類都有同名函式時,可以是顯示父類的函式輸出方式 也可以是顯示子類的輸出方式 但兩者會顯示的原因不同,如...

虛擬繼承,過載,隱藏

1.為什麼要引入虛擬繼承 虛擬繼承是多重繼承中特有的概念。虛擬基類是為解決多重繼承而出現的。如 類d繼承自類b1 b2,而類b1 b2都繼承自類a,因此在類d中兩次出現類a中的變數和函式。為了節省記憶體空間,可以將b1 b2對a的繼承定義為虛擬繼承,而a就成了虛擬基類。實現的 如下 class a ...