1.重構現象:因為派生類的建構函式只能初始化它的直接基類,所以這樣就出現了一種新的現象——重構,重構是很常見的,它是指在子類中重新定義父類的建構函式,已達到自己想要的建構函式。重構要注意的是一旦被重構,編譯器必須重新編譯這些類的**。
class pp
;class d1:public base
;class d2:public d1;/*
*/
int main()
4.虛析構函式:(一般基類的析構函式需要用虛函式)下例:
class clxbase
; virtual ~clxbase() {};
virtual void dosomething() ;
};class clxderived : public clxbase
; ~clxderived() ;
void dosomething() ;
};
主函式:clxbase *ptest = new clxderived;//定義的是基類,這個跟基類是否是虛函式有很大關係
clxderived *p=new clxderived;//定義是派生類
ptest->dosomething();delete ptest;delete p;//無論基類是否是虛函式都會從派生類開始呼叫
5.構造和析構的呼叫順序:下例:
class base
輸出結果:
base_c
base_c
d1_c
base_c
d1_c
d2_c
d2_d
d1_d
base_d
d1_d
base_d
base_d
無論是多少級繼承,建構函式總是先從基類開始,而析構函式就是先從本身開始到基類。
C Primer 物件導向程式設計
1.要注意區分類和類物件,物件只能訪問public成員,而類和友元可以訪問private成員。而對於基類的protected成員,派生類可以訪問其基類的protected成員 友元中也可以訪問protected成員 不能通過派生類物件在類外訪問protected成員 這點與private類似 值得注...
C Primer 物件導向程式設計
1 在c 中,基類將型別相關的函式與派生類不做改變直接繼承的函式區分對待。對於某些函式,基類希望它的派生類各自定義適合自身的版本,此時基類就將這些函式宣告成虛函式 virtual function 2 在c 中,當我們使用基類的引用 或指標 呼叫乙個虛函式時將發生動態繫結。3 關鍵字virtual只...
c primer 物件導向程式設計筆記
1 動態繫結 在c 中,通過基類的引用 或指標 呼叫虛函式時,發生動態繫結。引用 或指標 既可以指向基類物件也可以指向派生類物件。2 虛函式 1 保留字virtual 只在類內部的成員函式宣告中出現,不能用在類定義體外部初相的函式定義上。2 派生類中虛函式的宣告必須與基類中的定義完全匹配,但有乙個例...