#include <iostream>
using namespace std;
/***********************************************************************************************************************************
//【1】多态性是在父类或各子类中执行最合适成员函数。一般来说,只会选择父类或子类中的某一个成员函数来执行。这可给析构函数带来了麻烦!
//【2】如果有的资源是父类的构造函数申请的,有的资源是子类的构造函数申请的,而虚函数只允许程序执行父类或子类中的某一个析构函数,
岂不是注定有一部分资源将无法被释放?为了解决这个问题,虚析构函数变得与众不同。
**********************************************************************************************************************************/
class Animal
{
public:
Animal(int w=0,int a=0);
virtual ~Animal();//虚析构函数
protected:
int weight,age;
};
Animal::Animal(int w,int a)
{
cout <<"Animal consturctor is running..." <<endl;
weight=w;
age=a;
}
Animal::~Animal()
{
cout <<"Animal destructor is running..." <<endl;
}
class Cat:public Animal
{
public:
Cat(int w=0,int a=0);
~Cat();
};
Cat::Cat(int w,int a):Animal(w,a)
{
cout <<"Cat constructor is running..." <<endl;
}
Cat::~Cat()
{
cout <<"Cat destructor is running..." <<endl;
}
int main()
{
Animal *pa=new Cat(2,1);
Cat *pc=new Cat(2,4);
cout <<"Delete pa:" <<endl;
delete pa;
cout <<"Delete pc:" <<endl;
delete pc;
system("pause");
return 0;
}
从运行结果可以看出