这方法倒是好暴力!
其实我们知道,如果继承的话,编译器在派生类的构造函数中插入一些代码(嗯,是的插入代码,这个不足为怪吧,像
有些合的构造函数(就是编译器帮你生成的,非自己写的)那也是插入的代码)。那么在派生类的构造函数中会插入
基类的构造函数的代码。
#ifndef CLASS_NO_INHERIT_H #define CLASS_NO_INHERIT_H class NoInherit { private: NoInherit(){ std::cout<<"creating NoInherit"<<std::endl; } ~NoInherit(){ std::cout<<"deleting NoInherit"<<std::endl; } public: static NoInherit* createNoInherit(){ return new NoInherit(); } static void deleteNoInherit(NoInherit *delNoInherit){ delete delNoInherit; } }; #endif