1.1、
子類物件可以
直接賦值
給父類物件
1.2、
子類物件可以
直接初始化
父類物件
1.3、
父類指標
可以直接指向子類物件(應該只能使用裡面相同的成員吧?)
1.4、
父類引用
可以直接引用子類物件
/********************* 子類物件的相容性 ********/
#include
#include
using namespace std;
class parent
void add(int a, int b) //parent中兩個add構成過載關係
};/*
因child出現了以add命名的函式(只要有乙個與父類同名的函式),所以父類的所有名為add的函式在子類中都會被隱藏起來。子類的同名覆蓋
*/class child : public parent
};int main()
2.1、
子類物件
退化為
父類物件
2.2、只能訪問父類中定義的成員
2.3、
可以
直接訪問
被子類覆蓋的同名成員
3.1、
子類中可以重定義父類中己經存在的成員函式,這種重定義發生在繼承中,稱為
「函式重寫」。
3.2、
函式重寫是同名覆蓋的一種特殊情況。
/******************** 賦值相容問題 ****************/
#include
#include
using namespace std;
class parent
void add(int a, int b) //parent中的兩個add構成過載關係
void print()
};/*
因child出現了以add命名的函式(只要有1個與父類同名的函式),所以父類的所有名為add的函式
在子類中都會被隱藏起來
*/class child : public parent
void print()
};/*
編譯以下函式時,編譯器不可能知道指標p究竟指向了什麼,但是編譯器沒有理由報錯,於是,他認為最安全的做法是呼叫父類的print函式,因為父類和子類肯定都有相同的print函式(傳&c時,子類指標退化為父類指標)
*/void how_to_print(parent* p) //全域性函式
int main()
4.1、
子類物件可以當作父類物件使用(
賦值相容)
4.2、
父類指標可以正確的指向子類物件(因為退化的原因,實際呼叫父類的成員或函式。)
4.3、
父類引用可以正確的代表子類物件
4.4、
子類中可以重寫父類中的成員函式
48 同名覆蓋引發的問題
父子間的賦值相容性原則 子類物件可以當作父類物件使用 相容性 子類可以直接賦值給父類物件,子類物件可以直接初始化父類物件,父類指標可以直接指向子類物件,父類引用可以直接引用子類物件。include include using namespace std class parent void add i...
C 48 同名覆蓋引發的問題
子類物件可以當做父類物件使用 相容性 上述 中,當使用父類指標 引用 指向子類物件的時候 子類物件退化為父類物件 只能訪問父類中定義的成員 可以直接訪問被子類覆蓋的同名成員 子類重定義父類中已經存在的成員函式,並且是在繼承中,這樣叫做函式重寫。函式重寫是同名覆蓋中特殊的一種情況。class pare...
同名覆蓋引發的問題
子類物件可以直接賦值給父類物件 子類物件可以直接初始化父類物件 父類指標可以直接指向子類物件 父類引用可以直接引用子類物件 同名覆蓋引發的問題.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include class parent void add int x void add i...