
设计一个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;
- }
