C 基礎 繼承時的名字遮蔽問題

2021-10-06 15:38:05 字數 644 閱讀 7201

如果派生類中的成員(包括成員變數和成員函式)和基類中的成員重名,那麼就會遮蔽從基類繼承過來的成員。所謂遮蔽,就是在派生類中使用該成員(包括在定義派生類時使用,也包括通過派生類物件訪問該成員)時,實際上使用的是派生類新增的成員,而不是從基類繼承來的。

下面是乙個成員函式的名字遮蔽的例子:

#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 當父類中定義了乙個有參的建構...