#include "stdafx.h" class CWnd { public: virtual void Create() { printf("CWnd Create "); PreCreateWindow(); } virtual void PreCreateWindow() { printf("CWnd PreCreateWindow "); } }; class MainFrame:public CWnd { public: virtual void PreCreateWindow() { printf("MainFrame PreCreateWindow "); } }; int _tmain(int argc, _TCHAR* argv[]) { MainFrame* p=new MainFrame; p->Create(); return 0; }
打印
CWnd Create
MainFrame PreCreateWindow
声明virtual后,根据指针指向类型调用,优先调用子类,没有改写则调用父类。
不声明virual 根据指针类型调用。