默認構造函數如果不符合意愿,調用內部的什么參數就需要自己寫 委托(composition by reference),類中有其他類的指針,需要時調用,把任務委托給其他類(分工大類為接口,小類為實現內容 Handle/Body(pImpl)),同component區別,委托有外部就有內部,生命是相關聯一起出現 繼承(public, PRivate, protected)is-a,子類有父類的成分在里面,子類繼承父類數據成員和成員方法,繼承與虛函數搭配最有價值。繼承關系下的構造與析構
如果類是一個父類或將來會是一個父類就把析構函數定義為虛函數且必須是虛函數,否則會出錯繼承和虛函數(多態) non-virtual函數:你不希望子類,或派生類重新定義(override,復寫)它 virtual函數:你希望derived class重新定義它,且你對它已有默認定義,運行時將運行子類定義的函數。(子類復寫虛函數時需要加virtual) pure virtual函數:你希望子類一定要重新定義它,你對它沒有默認定義(可以有定義)數據被繼承將占用內存的一部分,而函數繼承的是調用權(子類可調用父類的函數)。23個設計模式之(Template Method) 先把固定可以寫好的先寫好,留下無法無法決定的函數作為虛函數讓子類去定義它(虛函數類似于父類里面有一個動作延緩到子類里面去定義)eg: CMyDoc myDoc; myDoc.OnFileOpen();編譯器格式為 : CDocument::OnFileOpen(&myDoc);而&myDoc就是一個this指針,運行時將指向子類復寫的虛函數Inheritance(繼承) + Composition(復合)關系下的構造和析構 子類有父類成分又有component的部分,調用先后(練習題) 子類中有父類部分,父類里面又有component的成分,構造次序先component在父類,析構相反。 Delegation(委托)+Inheritance(繼承)功能最強大作業
新聞熱點
疑難解答
圖片精選