如果派生類中的成員(包括成員變數和成員函式)和基類中的成員重名,那麼就會遮蔽從基類繼承過來的成員。所謂遮蔽,就是在派生類中使用該成員(包括在定義派生類時使用,也包括通過派生類物件訪問該成員)時,實際上使用的是派生類新增的成員,而不是從基類繼承來的。
下面是乙個成員函式的名字遮蔽的例子:
#includeusing namespace std;
//基類people
class people;
void people::show()
//派生類student
class student: public people;
student::student(char *name, int age, float score)
void student::show();
void base::func()
void base::func(int a)
//派生類derived
class derived: public base;
void derived::func(char *str)
void derived::func(bool is)
int main()
C 基礎 類繼承時的作用域巢狀
引言 在繼承情況下,派生類的作用域巢狀在基類作用域中 如果不能在派生類作用域中確定名字,就在外圍基類作用域中查詢該名字的定義。正是這種類作用域的層次巢狀使我們能夠直接訪問基類的成員,就好像這些成員是派生類成員一樣 bulk item bulk cout bulk.book endl 名字book的使...
C 在多重繼承時的指標轉換問題
在c 中,指標的型別轉換是經常發生的事情,比如將派生類指標轉換為基類指標,將基類指標轉換為派生類指標。指標的本質其實就是乙個整數,用以記錄程序虛擬記憶體空間中的位址編號,而指標的型別決定了編譯器對其指向的記憶體空間的解釋方式。基於上面的理解,我們似乎可以得出乙個結論,c 中對指標進行型別轉換,不會改...
關於繼承時構造方法的問題
1 在乙個類中,如果不定義建構函式,都會有乙個預設的無參建構函式 2 如果在乙個類中定義了乙個有引數的建構函式,那原來那個無參的建構函式就沒了,你可以手動把無參的也定義出來 3 當子類繼承父類時,子類的建構函式的第一行都會通過super 來預設呼叫父類的無參建構函式 4 當父類中定義了乙個有參的建構...