本文主要是介绍与虚函数相关的几点注意之三——构造与析构中的虚函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【原文写于21 January 2007 ,注】
构造与析构中的虚函数
一个类的虚函数在它自己的构造函数和析构函数中被调用的时候,它们就变成普通函数了,不“虚”了。也就是说不能在构造函数和析构函数中让自己“多态”。
参考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
“
这篇关于与虚函数相关的几点注意之三——构造与析构中的虚函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!