目录
作业:
1> 思维导图
2>设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。
效果图:
作业:
1> 思维导图
2>设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。
#include <iostream>
using namespace std;
//设计一个per类和stu类
class Per
{
private://私有的
string name;//姓名
int age;//年龄
double *hight;//身高
double *weight;//体重
public:
//构造函数
Per(string n,int a,double h,double w):name(n),age(a),hight(new double(h)),weight(new double(w))
{
cout << "Per::有参构造函数" << endl;
}
string GetName()const
{
return name;
}
int GetAge() const
{
return age;
}
double GetHight() const
{
return *hight;
}
double GetWeight() const
{
return *weight;
}
void show()
{
cout << "姓名:" << name << endl;
cout << "年龄:" << age << endl;
cout << "身高:" << *hight << endl;
cout << "体重:" << *weight << endl;
}
//析构函数
~Per()
{
cout << "Per::析构函数" << endl;
delete hight;
delete weight;
}
};
class Stu
{
private:
int score;//成绩
Per p1;//学生信息
public:
//构造函数
Stu(int s,string n,int a,double h,double w): score(s), p1(n,a,h,w)
{
cout << "Stu:: 有参构造函数" << endl;
}
void show()
{
cout << "成绩:"<< score << endl;
p1.show();
}
//拷贝构造函数
Stu(const Stu &other):score(other.score),p1(other.p1)
{
cout << "Stu::拷贝构造函数" <<endl;
}
Stu& operator=(const Stu& other)
{
if (this == &other)
return *this;
score = other.score;
p1 = Per(other.p1.GetName(), other.p1.GetAge(), other.p1.GetHight(), other.p1.GetWeight());
return *this;
}
//析构函数
~Stu()
{
cout << "Stu:: 析构函数" << endl;
}
};
int main()
{
Stu S1(100,"zhangsan",23,180.7,100.98);//有参构造函数
S1.show();
Stu S2(S1);//拷贝构造函数
return 0;
}
效果图: