14周阅读程序2.(2)(对虚析构函数的进一步认识)

/*    

*程序的版权和版本声明部分          

* Copyright (c)2013, 烟台大学计算机学院学生        

* All rightsreserved.         

* 文件名称:Mammal .cpp       

* 作    者:  田凤        

*完成日期:2013年5月31日      

* 版本号: 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;
}

*运行结果:

14周阅读程序2.(2)(对虚析构函数的进一步认识)_第1张图片

*心得体会:基类的析构函数声明为虚析构函数时,先调用派生类的析构函数,再调用基类的析构函数!

你可能感兴趣的:(14周阅读程序2.(2)(对虚析构函数的进一步认识))