#include <iostream>
using namespace std;
class Per
{
private:
//定义私有成员姓名,年龄
string name;
int age;
//定义指针成员身高体重
int *hight;
double *weight;
public:
//Per的构造函数
Per()
{
cout << "Per::无参构造函数" << endl;
}
Per(string name, int age, int hight, double weight):name(name),age(age),hight(new int(hight)),weight(new double(weight))
{
cout << "Per::无参构造函数" << endl;
}
//Per的析构函数
~Per()
{
cout << "Per::析构函数" << endl;
delete (hight);
delete (weight);
hight = nullptr;
weight = nullptr;
}
//Per的拷贝构造函数
Per(const Per &other):name(other.name),age(other.age),hight(new int(*(other.hight))),weight(new double(*(other.weight)))
{
cout << "Per::拷贝构造函数" << endl;
}
//显示
void show()
{
cout << "name:" << name << " ";
cout << "age:" << age << " ";
cout << "hight:" << this->hight << " ";
cout << "weight" << this->weight << endl;
}
};
//封装一个stu类包含Per
class Stu
{
private:
double score;
Per p1;
public:
//Stu的构造函数
Stu()
{
cout << "Stu::无参构造函数" << endl;
}
Stu(double score, string name, int age, int hight, double weight):score(score),p1(name,age,hight,weight)
{
cout << "Stu::有参构造函数" << endl;
}
//Stu的拷贝构造函数
Stu(const Stu &other):score(other.score),p1(other.p1)
{
cout << "Stu::拷贝构造函数" << endl;
}
//Stu的析构函数
~Stu()
{
cout << "Stu::析构函数" << endl;
}
void show()
{
cout << "====信息====" << endl;
cout << "score:" << score << " ";
p1.show();
cout << "=============" << endl;
}
};
int main()
{
Stu s1;
Stu s2(99,"张三" ,18 ,178, 55);
Stu s3(s2); //拷贝构造函数
s3.show();
return 0;
}