#pragma once #include <iostream> using namespace std; class Base { public: Base(void){} ~Base(void){} virtual void fun(){cout<<"This is Base::fun"<<endl;} virtual void func()=0; };
#pragma once #include "base.h" class Son :public Base { public: Son(void){} ~Son(void){} virtual void fun(){cout<<"This is a son function"<<endl;} protected: virtual void func(){cout<<"what a fuck day it is"<<endl;} };
#pragma once #include "son.h" class T : public Son { public: T(void){} ~T(void){} void xy() { Base *b = new Son(); b->func(); } };
#include "testInline.h" #include "Son.h" #include "T.h" void main() { Base* pB; Son* pS = new Son(); pB = pS; pB->fun(); T tst; tst.xy(); }
结果:
This is a son function
what a fuck day it is
原文:http://blog.csdn.net/ddupd/article/details/41925887