C 深度解析 38 同名覆蓋引發的問題

2021-09-25 11:47:01 字數 864 閱讀 6666

1.父子間的賦值相容(子類物件可以當作父類物件使用(相容性))

#includeusing namespace std;

class parent

void add(int a, int b) };

class child : public parent

};int main()

2.父類指標(引用):當使用父類指標(引用)指向子類物件時

3.特殊的同名函式

class parent

void add(int a, int b)

void print() };

class child : public parent

void print() };

/*編譯以下函式時,編譯器不可能知道指標p究竟指向了什麼,但是編譯器沒有理由報錯,於是,他認為最安全的做法是呼叫父類的print函式,因為父類和子類肯定都有相同的print函式(傳&c時,子類指標退化為父類指標)

*/void how_to_print(parent *p)

int main()

在編譯這個函式的時候,編譯器不可能知道指標p究竟指向了什麼。但是編譯器沒有理由報錯。於是,編譯器認為最安全的做法是呼叫 父類的print函式,因為父類和子類肯定都有相同的print函式。編譯器的這種處理顯然不是我們所期望的,於是引入了多型的概念

5.小結

同名覆蓋引發的問題

子類物件可以直接賦值給父類物件 子類物件可以直接初始化父類物件 父類指標可以直接指向子類物件 父類引用可以直接引用子類物件 同名覆蓋引發的問題.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include class parent void add int x void add i...

48 同名覆蓋引發的問題

父子間的賦值相容性原則 子類物件可以當作父類物件使用 相容性 子類可以直接賦值給父類物件,子類物件可以直接初始化父類物件,父類指標可以直接指向子類物件,父類引用可以直接引用子類物件。include include using namespace std class parent void add i...

C 48 同名覆蓋引發的問題

子類物件可以當做父類物件使用 相容性 上述 中,當使用父類指標 引用 指向子類物件的時候 子類物件退化為父類物件 只能訪問父類中定義的成員 可以直接訪問被子類覆蓋的同名成員 子類重定義父類中已經存在的成員函式,並且是在繼承中,這樣叫做函式重寫。函式重寫是同名覆蓋中特殊的一種情況。class pare...