- 设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象 p1,设计这两个类的构造函数、析构函数和拷贝构造函数。
#include <iostream>using namespace std;
class Per
{string name;int age;int *hight;int *weight;
public:void my_set(string name,int age){this-> name = name;this-> age = age;}void show(){cout <<"名字为:" << name << ' ' << "成绩为:" << age << ' ';cout << "身高为:" << *hight << ' ' << "体重为:" << *weight << endl;}Per(int *h,int *w):hight(new int),weight(new int){hight=h;weight=w;cout << "这是Per的构造函数" << endl;}Per(Per &other){int *hi=new int;int *we=new int;*hi = *(other.hight);*we = *(other.weight);cout << "这是Per的拷贝构造函数" << endl;}~Per(){cout << "这是Per的解析函数" << endl;delete hight;delete weight;hight = nullptr;weight = nullptr;}
};class Stu
{int score;
public:Per p1;void set_stu(int score){this->score=score;}void show(){cout << "成绩为:" << score << endl;}Stu(int *hight,int *weight):p1(hight,weight){cout << "这是Stu的构造函数" << endl;}Stu(Stu &other):p1(other.p1){this ->score = other.score;p1=other.p1;cout << "这是Stu的拷贝构造函数" << endl;}~Stu(){cout << "这是Stu的解析函数" <<endl;p1.~Per();}};int main()
{int *hight=new int;*hight = 183;int *weight=new int;*weight = 120;Stu s1(hight,weight);s1.p1.my_set("张三",18);s1.p1.show();s1.set_stu(89);s1.show();*hight = 180;*weight = 110;Stu s2(hight,weight);s2.p1.my_set("李四",20);s2.p1.show();s2.set_stu(90);s2.show();return 0;
}