1.思维导图
2.
要求:
设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。
源代码:
#include <iostream>
using namespace std;
class Per//设计一个Per类
{
//类中包含私有成员:姓名、年龄、指针成员身高、体重
private:
string name;
int age;
double *height;
double *weight;
public:
Per();//Per无参构造函数
Per(string name, int age, double height, double weight);//Per有参构造函数
~Per();//Per析构函数
Per(const Per &other);//Per拷贝构造函数
};
class Stu//设计一个Stu类
{
//类中包含私有成员:成绩、Per类对象p1
private:
double score;
Per p1;
public:
Stu();//Stu无参构造函数
Stu(double score, string name,int age, double h,double w);//Stu有参构造函数
~Stu();//Stu析构函数
Stu(const Stu &other);//Stu拷贝构造函数
};
Per::Per()
{
cout << "无参构造函数" << endl;
cout << "============" << endl;
}
Per::Per(string name, int age, double h, double w):name(name),age(age),\
height(new double(h)),weight(new double(w))
{
cout << "有参构造函数" << endl;
cout << "============" << endl;
}
Per::~Per()
{
cout << "析构函数" << endl;
cout << "============" << endl;
delete height;
delete weight;
}
Per::Per(const Per &other):name(other.name),age(other.age),\
height(new double(*(other.height))),weight(new double (*(other.weight)))
{
cout << "拷贝构造函数" << endl;
cout << "============" << endl;
}
Stu::Stu()
{
cout << "无参构造函数" << endl;
cout << "============" << endl;
}
Stu::Stu(double score, string name,int age, double h,double w):score(score),\
p1(name,age,h,w)
{
cout << "有参构造函数" << endl;
cout << "============" << endl;
}
Stu::~Stu()
{
cout << "析构函数" << endl;
cout << "============" << endl;
}C++
Stu::Stu(const Stu &other):score(other.score), p1(other.p1)
{
cout << "拷贝构造函数" << endl;
cout << "============" << endl;
}
int main()
{
cout << "Per:" << endl << endl;
Per p2;
Per p3("李明",18,175,140);
Per p4(p3);
cout << "Stu:" << endl << endl;
Stu s1;
Stu s2(88,"小红",17,165,120);
Stu s3(s2);
return 0;
}