在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...