问题描述
- c++构造函数传参数失败
-
#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++构造函数详解
你可以看完后在来写一下这段代码
解决方案二:
构造函数定义的有问题,看看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
不知道是否能帮到你,还是建议遇到这些问题,可以自己先看看书,研究一下。
这些东西,不是很难,都是一些规范和定义
解决方案四:
构造函数的定义就错啦,好好看看书吧。
解决方案五:
首先,代码有很多错误和可以修改的地方,属于基础知识掌握不到位。
其次,默认参数这种方法是不建议使用的,容易造成重载混淆,也不利于代码的可读性,维护性。
最后,如果确认需求是可以只输入几项信息,其他的可以省略,那么选择直接重载构造函数,并使用初始化列表的方式。
解决方案六:
你构造函数定义都不对,先补补CPP基础