#include <iostream>
using namespace std;
class Animal
{
public:
Animal(string t_name, int t_age)
{
this->m_name=t_name;
this->m_age=t_age;
cout<<"Animal被构造"<<endl;
}
Animal(const Animal &t_obj)
{
this->m_name=t_obj.m_name;
this->m_age=t_obj.m_age;
cout<<"Animal被拷贝"<<endl;
}
~Animal()
{
cout<<"Animal被析构"<<endl;
}
private:
string m_name;
int m_age;
};
class Dog:public Animal
{
public:
Dog(int t_leg, int t_speed,string t_name,int t_age):Animal(t_name,t_age)//显示调用
{
this->m_leg=t_leg;
this->m_speed=t_speed;
cout<<"dog被构造"<<endl;
};
Dog(const Dog & t_boj):Animal(t_boj)//显示调用
{
this->m_leg=t_boj.m_leg;
this->m_speed=t_boj.m_speed;
cout<<"Dog被拷贝"<<endl;
}
~Dog()
{
cout<<"dog被析构"<<endl;
}
private:
int m_leg;
int m_speed;
};
int main()
{
Animal t_animal("demo",2);//调用构造函数,会在程序结束时调用析构函数
Dog t_dog(4,10,"hsq",1);//调用父类的构造函数->调用子类的构造函数,会在程序结束时调用子类的析构函数->调用父类的析构函数
cout<<"---------------------------------"<<endl;
{
Animal t_animal_02(t_animal);//调用父类拷贝函数,释放时调用析构函数
Dog t_dog_02(t_dog);//父类拷贝->子类拷贝->子类析构->父类析构
cout<<"---------------------------------"<<endl;
}
system("pause");
return 0;
}
运行截图