子類中的函式遮蔽及using的使用

2021-07-23 16:36:19 字數 739 閱讀 9847

在c++的類繼承中,子類會遮蔽父類中的同名函式,不論此函式的返回值、引數、是否為virtual,也就是說父類和子類中的函式只要名字相同,子類中的函式就會遮蔽掉父類中的同名函式,例如一下例子:

class b

void disp1(int x)

void disp1(int x, int y)

};class d : public b

};在子類d中,disp1(int a,int b,int c)會遮蔽掉父類中的三個disp1,也就是說此時下面的三個呼叫都是錯誤的:

d d;

d.disp1()

d.disp1(x)

d.disp1(x,y)

但d.disp1(x,y,z)是正確的

如果想要在子類中讓父類中的三個函式可見,則需使用using 關鍵字:

class d : public b

};此時,以下呼叫便是正確的

d d;

d.disp1()

d.disp2(x)

d.disp3(x,y)

注意:using 讓父類中所有的被遮蔽的disp1函式在子類中可見,而不能讓一部分disp1在子類中可見,而讓剩下的幾個disp1在子類中保持被遮蔽狀態。比如說我想在子類中繼承父類中的disp1(),而保持disp1(int x)和disp1(int x,int y)仍然為遮蔽狀態,此時,using便派不上用場了,可以用這種方法:

class d : public b

};

c 類的建構函式及子類的建構函式

類在建立的時候需要呼叫建構函式,假如對系統沒有任何說明,則會呼叫系統預設的建構函式,在需要自行寫建構函式的時候往往是一下幾種情況 1.建構函式中不帶引數 includeusing namespace std class student student student void int student...

C 中using的作用

1.在當前檔案中引入命名空間 這是我們最熟悉的用法,例如 using namespace std 2.在子類中使用 using 宣告引入基類成員名稱 參見c primer 在private或者protected繼承時,基類成員的訪問級別在派生類中更受限 class base protected st...

C 中using的作用

1.在當前檔案中引入命名空間 這是我們最熟悉的用法,例如 using namespace std 2.在子類中使用 using 宣告引入基類成員名稱 參見c primer 在private或者protected繼承時,基類成員的訪問級別在派生類中更受限 class base protected st...