C++(day4)
一、思维导图
二、设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数、拷贝赋值函数。
#include <iostream>using namespace std;class Per
{
private:string name;int age;double *high;double *weigh;
public:Per(){cout<<"Per::无参构造函数"<<endl;}Per(string name,int age,double high,double weigh):name(name),age(age),high(new double(high)),weigh(new double(weigh)){cout<<"Per::构造函数"<<endl;}~Per(){delete high;delete weigh;cout<<"Per::析构函数"<<endl;};Per(const Per &other):name(other.name),age(other.age),high(new double(*(other.high))),weigh(new double(*(other.weigh))){cout<<"Per::拷贝构造函数"<<endl;}Per &operator=(const Per &other){if(this != &other){name=other.name;age=other.age;high=new double(*(other.high));weigh=new double(*(other.weigh));}cout<<"Per::拷贝赋值函数"<<endl;return *this;}void show(){cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"身高"<<*high<<endl;cout<<"体重"<<*weigh<<endl;}
};class Stu
{
private:double score;Per p1;
public:Stu(){cout<<"Stu::无参构造函数"<<endl;}Stu(double score,string name,int age,double high,double weigh):score(score),p1(name,age,high,weigh){cout<<"Stu::构造函数"<<endl;}~Stu(){cout<<"Stu::析构函数"<<endl;}Stu(const Stu &other):score(other.score),p1(other.p1){cout<<"Stu::拷贝构造函数"<<endl;}Stu &operator=(const Stu &other){if(this != &other){score=other.score;p1=other.p1;}cout<<"Stu::拷贝赋值函数"<<endl;return *this;}void show(){cout<<"*学生信息*"<<endl;p1.show();cout<<"成绩:"<<score<<endl;}
};int main()
{
// Per p1;
// Per p2("Beidou",17,173,122);
// Per p3(p2);
// p1=p2;
// p2.show();Stu s1;Stu s2(0,"Univin",16,170,112);Stu s3(s2);s1=s3;s2.show();return 0;
}