C++中 构造函数 析构函数 能否调用虚函数的问题

来源:互联网 发布:淘宝01店手机是真的吗 编辑:程序博客网 时间:2024/05/16 02:37


首先,给出结论:C++中 在构造函数与析构函数中都是可以调用虚函数的,只是该调用并不发生多态行为,仅仅是调用自身类中定义的版本。

对于该结论不应怀疑,C++primer第四版中文版  497页有说明!

下面给出代码解释:

#include <iostream>using namespace std;class A{public:A(){cout << "A构造函数";Test();}virtual ~A(){cout << "A析构函数";cout << "A::Test()" << endl;}virtual void Test(){cout << "A::Test()" << endl;}};class B :public A{public:B(){cout << "B构造函数";Test();}~B(){cout << "B析构函数";Test();}virtual void Test(){cout << "B::Test()" << endl;}};int main(int argc, char* argv[]){cout << "构造对象:" << endl;A* pA = new B();cout << endl<< "动态调用:" << endl;pA->Test();cout << endl;cout << "析构对象:" << endl;delete pA;return 0;}
两个类中都是一个 Test 虚函数,在各自的构造函数、析构函数中都有调用,但下面的结果很明显,调用的都是自己类的版本。



0 0
原创粉丝点击