#include #include #include #include class h2o
;class person
;person::person()
person::~person()
void person::eat()
void person::eat(int num)
class man : public person ,virtual public h2o
;man::man()
man::~man()
void man::eat()
void man::eat(int num)
void man::hash2o()
/*而過載方式的繼承類被強轉成基類再呼叫過載函式,則呼叫的是基類的函式。
*/void printf_eat_int(person *p,int num)
/* 使用虛函式繼承時,當繼承類被強轉成基類後呼叫虛函式,呼叫的還是繼承類的虛函式。
*/ void printf_eat(person *p)
void hash2o(h2o *p)
int main(void)
/*$ ./virtual
person::person()
man::man()
person + 4
man + 4
man eat meat
man eat meat
man has h2o
man::~man()
person::~person()
*/
繼承和過載
繼承的目的 實現 重用 派生的目的 當新的問題出現原有程式無法解決 或不能完全解決 時,需要對原有程式進行改造 1 當建立乙個類時,您不需要重新編寫新的資料成員和成員函式,只需指定新建的類繼承了乙個已有的類的成員即可。這個已有的類稱為 基類,新建的類稱為 派生類。2 乙個類可以派生自多個類,這意味著...
c 的繼承關係和函式過載
主要關注兩個方面 1 子類和基類之間變數重名 2 函式重名,但是形參列表不同 第乙個 眾所周知,子類繼承基類的所有變數,那麼如果子類的成員變數和父類的某一變數重名,通過父類的引用或者指標訪問的變數是父類的變數還是子類的呢?寫個程式測之。結果為 4 這說明,在編譯期間,基類的指標取變數值為基類自己的變...
C 過載和繼承混用會怎樣?
overload就是過載,大家都會。但是大家有沒有想過,我們呼叫乙個過載方法的時候會呼叫哪個呢?答案是和簽名最接近的乙個。大家是不是看到這裡已經開始覺得這個部落格很無聊了,都是這麼簡單的內容。沒關係,我們慢慢深入。我們知道方法為了能夠減少書寫個數,提供了乙個叫預設引數的東西 voidp object...