/*
*程序的版权和版本声明部分:
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:体验虚析构函数
*作者:刘中林
*完成日期:2014 年 5 月 26 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: -
*问题描述:
*程序输出:
*问题分析:
*算法设计:
*/
#include <iostream>
using namespace std;
class Mammal
{
public:
Mammal( ){
cout<<"Mammal constructor called."<<endl;
}
virtual ~Mammal(){
cout<<"Mammal destructor called."<<endl;
}
virtual void Speak() const
{
cout<<"Mammal speak."<<endl;
}
};
class Dog : public Mammal{
public:
Dog(){
cout<<"Dog constructor called."<<endl;
}
~Dog(){
cout<<"Dog destructor called."<<endl;
}
void Speak() const
{
cout<<"Woof!"<<endl;
}
};
int main(){
Mammal *p=new Dog;
p->Speak();
delete p;
return 0;
}
*样例输出:
*心得体会:对样例输出最后两行:main函数中用new开辟动态存储空间,且Mammal类中为虚析构函数,所以先调用了派生类的析构函数,再调用了基类的析构函数。。