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