#include <iostream>
#include<string>
using namespace std;
class Date //日期类
{
private:
int Date_year; //年
int Date_month; //月
int Date_day; //日
public:
Date(int year=2000, int month=1, int day=1);
void show(); //以“年-月-日”格式输出年月日
~Date();
};
class Croster //名单类
{
private:
string name;
Date birthday;
public:
Croster();
Croster(string name,int year,int month,int day);
Croster(string name, Date date);
void show();//显示姓名和出生日期
~Croster();
};
Date::Date(int year, int month, int day){
cin>>Date_year;
cin>>Date_month;
cin>>Date_day;
}
void Date::show(){
cout<<"Birthday: "<<Date_year<<"-"<<Date_month<<"-"<<Date_day<<endl;
}
Date::~Date(){
}
Croster::Croster(){
cout<<"Name: "<<"NULL, "<<"Birthday: "<<"0-0-0"<<endl;
}
Croster::Croster(string name,int year,int month,int day){
cin>>name;
cin>>year;
cin>>month;
cin>>day;
}
Croster::Croster(string name, Date date){
cin>>name;
date.Date();
cout<<"Name: "<<name<<", ";
date.show();
}
void Croster::show(){
cout<<"Name: "<<name<<", ";
birthday.show();
}
Croster::~Croster(){
}
int main()
{
Croster c0,c1,c2;
Date d;
int a,year,month,day;
string name;
cin>>a;
if(a=0)
c0.Croster();
else if(a=1)
{
c1.Croster(name,year,month,day);
c1.show();
}
else if(a=2)
c2.Croster(name,d);
else
exit(0);
return 0;
}
if(a=0)
c0.Croster();
else if(a=1)
{
c1.Croster(name,year,month,day);
c1.show();
}
else if(a=2)
c2.Croster(name,d);
else
exit(0);
这三句Croster的调用是有问题的,只有new的时候可以显示调用构造函数。你可以这么写
Croster c0,c1(name,year,month,day),c2(name,d);
这样会自动调用它们对应的构造函数
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632