作业2
代码
#include <iostream>
using namespace std;
class Per
{
private:
string name;
int age;
double* height;
double* weight;
public:
//有参构造函数
Per(string name,int age,int height,int weight):name(name),age(age),height(new double(height)),weight(new double(weight))
{
cout << "Per构造函数" << endl;
}
//拷贝构造函数
Per(const Per &other):name(other.name),age(other.age),height(new double(*(other.height))),weight(new double(*(other.weight)))
{
cout << "Per深拷贝" << endl;
}
//析构函数
~Per()
{
delete height;
height = nullptr;
delete weight;
weight = nullptr;
cout << "Per析构函数" << endl;
}
};
class Stu
{
private:
double score;
Per p1;
public:
//有参构造函数
Stu(double score,string name,int age,int height,int weight):score(score),p1(name,age,height,weight)
{
cout << "Stu构造函数" << endl;
}
//深拷贝
Stu(const Stu &other):score(other.score),p1(other.p1)//age(other.age),height(new double(*(other.height))),weight(new double(*(other.weight)))
{
cout << "Stu深拷贝" << endl;
}
//析构函数
~Stu()
{
cout << "Stu析构函数" << endl;
}
};
int main()
{
Per p2("耿同灏",2000,500,600);
Per p3(p2);
cout << "************" << endl;
Stu s2(88.88,"耿同灏",2000,500,600);
cout << "************" << endl;
Stu s3(s2);
cout << "************" << endl;
return 0;
}