//
2.*Copyright(c) 2016.烟台大学计算机与控制工程学院
3.*ALL rights reserved.
4.*文件名称:main.cpp
5.*作者:孙亚茹
6.*完成日期:2016年5月27日
7.*问题描述:阅读有关虚析构函数的程序,写出运行结果。
8.*//
#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。
总结:
基类成员函数为虚函数,派生类中同名函数自动为虚函数。