作业:
- 整理思维导图
- 设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象 p1,设计这两个类的构造函数、析构函数和拷贝构造函数。
#include <iostream>
using namespace std;
class Per
{
string name;
int age;
int *high;
int *weight;
public:
Per(string name,int age,int *high,int *weight)
{
this->name = name;
this->age=age;
this->high=high;
this->weight=weight;
}
void show()
{
cout << "name=" << name << endl;
cout << "age=" << age << endl;
cout << "high=" << *high << endl;
cout << "weight=" <<*weight << endl;
}
~Per()
{
//在析构之前释放堆区的空间
cout << "准备释放Per空间:" << endl;
delete high;
delete weight;
high = nullptr;
weight = nullptr;
cout << "Per的析构函数" << endl;
}
Per(Per &other)
{
this->name=other.name;
this->age=other.age;
this->high=new int;
*high=*(other.high);
this->weight=new int;
*weight=*(other.weight);
cout<<"per的拷贝构造函数"<<endl;
}
};
class Stu
{
int score;
public:
Per p1;
public:
Stu(string name,int age,int score,int *high,int *weight):p1(name,age,high,weight),score(score)
{
}
void show()
{
cout << "score=" << score << endl;
}
~Stu()
{
//在析构之前释放堆区的空间
cout << "Stu的析构函数" << endl;
}
Stu(Stu &other):p1(other.p1)
{
this->score=other.score;
cout<<"stu的拷贝构造函数"<<endl;
}
};
int main()
{
int a=180;
int b=120;
Stu s1("zhangsan",18,100,&a,&b);
s1.p1.show();
s1.show();
Stu s2=s1;
s2.p1.show();
return 0;
}