构造与析构中的虚函数
一个类的虚函数在它自己的构造函数和析构函数中被调用的时候,它们就变成普通函数了,不“虚”了。也就是说不能在构造函数和析构函数中让自己“多态”。
参考http://dev.csdn.net/…ae095.html
class ClassBase
{
public:
ClassBase() {
printOut(”Constructor in Base Class”);
foo();
}
virtual ~ClassBase() {
printOut(”Deconstructor in Base Class”);
foo();
}
virtual void foo() { printOut(”foo in Base Class”); }
};class ClassDerived : public ClassBase
{
public:
virtual ~ClassDerived() {
printOut(”Deconstructor in Derived Class”);
foo();
}
virtual void foo() { printOut(”foo in Derived Class”); }
};void main()
{
ClassBase * p =new ClassDerived;
delete p;
}
将打印
”
Constructor in Base Class
foo in Base Class
Deconstructor in Derived Class
foo in Derived Class
Deconstructor in Base Class
foo in Base Class
“