標籤:c++ 繼承 類 虛函數
1、建構函式的基類參數
假設繼承關係CDialog->CBaseDialog->CDeriveDialog
CDialog: :CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL)
CBaseDialog::CBaseDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL)
:CDialog(nIDTemplate, CWnd* pParentWnd)
CDeriveDialog ::CDeriveDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL)
:CBaseDialog(nIDTemplate, CWnd* pParentWnd)
[註:當已有的建構函式參數不完整時,不能使用如下連續構造的形式(假設CBaseDialog的構造沒有nIDTemplate參數),而是應該重定義CBaseDialog的建構函式:
CDeriveDialog ::CDeriveDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL)
:CBaseDialog(CWnd* pParentWnd):CDialog(nIDTemplate, pParentWnd)
]
2、虛函式宣告
虛函數在父類中聲明成為了虛函數,子類中無需再聲明一次,也具有虛函數屬性
3、子類虛函數中調用父類的實現
子類虛函數中調用父類的實現直接使用Parent::func方式調用
2、3的範例程式碼如下,其中print1函數用來說明第2點,print函數用來說明第3點
class Parent{public : virtual void print() { printf("Parent\r\n"); } virtual void print1() { printf("Parent\r\n"); }};class Son : public Parent{public : virtual void print() { printf("Parent\r\n"); Parent::print(); } void print1() { printf("Parent\r\n"); }};void main(){ Son son; son.print(); Parent *person = new Son; person->print1(); delete person;}
C++文法拾遺