#include
#include
#include
using namespace std;
class Person{
public:
Person(string id="gdhs",string ="dsfsda" ,string ="" ,string ="",string ="" )
{
void setIdPerson(string id);
void setName(string na);
void setSex(string se);
void setBirthday(string bd);
void setHomeAddress(string ad);
}
void Person::setIdPerson(string id)
{
IdPerson=id;
}
void setName(string na)
{
Name=na;
}
void setSex(string se)
{
Sex=se;
}
void setBirthday(string bd)
{
Birthday=bd;
}
void setHomeAddress(string ad)
{
HomeAddress=ad;
}
string getIdPerson()
{
return IdPerson;
}
string getBirthday()
{
return Birthday;
}
string getName()
{
return Name;
}
string getSex()
{
return Sex;
}
string getHomeAddress()
{
return HomeAddress;
}
/*void Person::input()
{
cout<<"输入人员信息:\n";
cout<<"姓名:";cin>>Name;
cout<<"\n身份证号:";cin>>IdPerson;
cout<<"\n性别:";cin>>Sex;
cout<<"\n生日:";cin>>Birthday;
cout<<"\n家庭住址:";cin>>HomeAddress;
}*/
void Person::display()
{
cout<<"姓名:"<<getName()<<endl<<"身份证号:"<<getIdPerson()<<endl<<"性别:"<<getSex()<<endl<<"生日:"<<getBirthday()<<endl<<"家庭住址:"<<getHomeAddress()<<endl;
}
private:
string IdPerson;
string Name;
string Sex;
string Birthday;
string HomeAddress;
};
int main()
{
cout<<"**********人员信息录入***********"<<endl;
Person p1("fdsfsd");
//p1.input();
p1.display();
system("pause");
return 0;
}
为什么构造函数中的默认函数传不进去?
这段代码错误比较多,你讲构造函数的中具体执行的操作都写在了声明当中,函数定义中又声明了几个函数,感觉对构造函数的具体用法还不是特别清楚。
推荐资料C++构造函数详解
你可以看完后在来写一下这段代码
你构造函数定义都不对,先补补CPP基础
构造函数定义的有问题,看看C++ Primer,补补基础吧
Person(string id="gdhs",string ="dsfsda" ,string ="" ,string ="",string ="" )
很明显这个是你重载的构造函数,默认的是Person();
按照你的想法是,如果在定义一个Person类型的对象时,如果没有给出全部参数的时候采用默认的参数值
Person(string id="gdhs",string na="dsfsda" ,string se="se" ,string bd="bd",string ad="ad" )
你上面的没有写出形参名,不知道是不是你贴代码的时候掉了
最后是Person p1("fdsfsd");
默认是将fdsfsd的值赋给id
不知道是否能帮到你,还是建议遇到这些问题,可以自己先看看书,研究一下。
这些东西,不是很难,都是一些规范和定义
构造函数的定义就错啦,好好看看书吧。
首先,代码有很多错误和可以修改的地方,属于基础知识掌握不到位。
其次,默认参数这种方法是不建议使用的,容易造成重载混淆,也不利于代码的可读性,维护性。
最后,如果确认需求是可以只输入几项信息,其他的可以省略,那么选择直接重载构造函数,并使用初始化列表的方式。