题目描述
已知日期类MyDate,见参考代码
已知学生类STU的部分类定义代码,见参考代码。
参考代码
#include <iostream>
using namespace std;
class MyDate {
private:
int year, month, day;
public:
void set(int ty=0, int tm=0, int td=0)
{ year = ty, month = tm, day = td; }
void print()
{ cout<<year<<"-"<<month<<"-"<<day<<endl; }
};
MyDate today; //全局变量,用于毕业日期设置
class STU {
private:
long id; //学号
int gra_state; //未毕业为0,毕业为1
MyDate *gra_date; //毕业日期,初始为空
public:
STU(int ti); //有参构造,输出相关信息
STU(STU & rs); //拷贝构造,设置毕业状态和毕业日期,输出相关信息
~STU()
{ if (gra_state==1) //判断是否毕业
{ cout<<"毕业生"<<id<<"已析构"<<endl;
cout<<"毕业日期";
gra_date->print();
delete gra_date;
}
else
cout<<"学生"<<id<<"已析构"<<endl;
}
};
//实现STU类的有参构造和拷贝构造
//主函数如下
int main()
{ int y, m, d, ti;
cin>>y>>m>>d;
today.set(y,m,d);
cin>>ti;
STU s1(ti); //通过构造函数生成一个在校学生
STU s2=s1; //通过拷贝构造生成毕业生
return 0;
}
学生初始是未毕业,毕业状态gra_state默认为0,毕业日期指针gra_date为空
通过拷贝构造实现毕业功能,其中学号id不变,毕业状态gra_state改为1,毕业日期指针gra_date动态分配空间,日期值与变量today相同(today是全局变量,在主函数中有设置日期)
请完成学生类STU的构造函数和拷贝构造函数
输入
第一行输入年月日,表示毕业日期
第二行输入一个学生学号
输出
看样例
输入样例1
2022 6 30
1000
输出样例1
学生1000已构造
毕业生1000已构造
毕业生1000已析构
毕业日期2022-6-30
学生1000已析构
AC代码
STU::STU(int ti):id(ti){cout<<"学生"<<id<<"已构造"<<endl;}
STU::STU(STU & rs)
{
id=rs.id;
gra_state=1;
gra_date=new MyDate;
*gra_date=today;
cout<<"毕业生"<<id<<"已构造"<<endl;
}