下面的程序输入4个职工记录并保存在一个数组中,然后显示输出数组中的刚输入的职工记录:
#include<iomanip.h>
#include<string.h>
class Date{ //日期类
short year; //年
short month; //月
short day; //日
public:
Date();
Date(int y,int m,int d):year(y),month(m),day(d){}
void show(){cout<<year<<'.'<<month<<'.'<<day;}
};
class Staff{ //职工类
char staffNo[5]; //职工号
char name[10]; //姓名
char sex; //性别,用M表示男、用F表示女
Date birthDay; //出生日期
public:
Staff();
Staff(const char st_no[],const char st_name[],char st_sex,
const Date &st_date):birthDay(st_date),sex(st_sex)
{
//将st-no中的最多4个字符的字符串复制到staffNo中
strncpy(staffNo,st_no,4);
//将st-name中的最多9个字符串复制到name中
strncpy(name,st_name,9);
}
void show()
{
cout<<endl<<setw(5)<<staffNo
<<setw(10)<<name
<<setw(3)<<sex;
birthDay.show();
}
};
Date::Date()
{
cout<<endl<<"请输入年月日:";
cin>>year>>month>>day;
cin.ignore(80,'\n'); //吃掉行尾多余字符(如果有的话)
}
Staff::Staff()
{
cout.setf(ios::left,ios::adjustfield);
cout<<endl<<"请输入职工号:";
cin.getline(staffNo,5);
cin.ignore(80,'\n');
cout<<endl<<"请输入姓名:";
cin.getline(name,10);
cin.ignore(80,'\n');
cout<<endl<<"请输入性别(M/F):";
cin>>sex;
cin.ignore(80,'\n');
}
void main()
{
Staff ss[4];
for(int i=0;i<4;i++)ss[i].show();
}
如果把无参构造函数改成Date::Date(){}和Staff::Staff(){},同时修改主函数,使程序功能不变。我改过以后,总是不对,
在主函数里,要是调用有参构造函数,以数组的方式应该怎么进行呢?