//
.*Copyright(c) 2016.烟台大学计算机与控制工程学院
.*ALL rights reserved.
.*文件名称:main.cpp
.*作者:李鑫
.*完成日期:2016年6月20日
.*问题描述:阅读有关虚析构函数的程序,写出运行结果。
.*//
#include<iostream>
using namespace std;
class Base
{
private:
char c;
public:
Base(char n):c(n) {}
virtual ~Base()
{
cout<<c;
}
};
class Derived:public Base
{
private:
char c;
public:
Derived(char n):Base(n+1),c(n) {}
~Derived()
{
cout<<c;
}
};
int main()
{
Derived d('X');
return 0;
}
==>
总结:
先执行基类的构造函数,基类中的c变为Y,再执行派生类中的构造函数,派生类中的c变为X,但是由于基类中的构造函数为虚析构函数,所以要先执行派生类中的析构函数再执行基类中的构造函数,所以输出结果为:XY。