c++构造函数传参数失败

问题描述

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基础

时间: 2024-11-02 02:41:46

c++构造函数传参数失败的相关文章

参数传递-c#用线程打开一个新窗口并传参数显示

问题描述 c#用线程打开一个新窗口并传参数显示 我想在form1用线程打开新的通知窗口form2,并传参数过去显示在这个窗口上,每个通知窗口显示一分钟,然后自动关闭.可能同时新建并显示三到四个这样的窗口,并不影响form1的正常运行.现在用百度到的方法,要么无法传参,要么显示秒退.求大神给个实例. 解决方案 不要在线程中创建窗口或者操作UI,应该用invoke传委托.传参数可以通过构造函数. 解决方案二: 建议你在程序中建立队列 Queue<string> infoQueue=new Queu

c++中拷贝构造函数的参数类型必须是引用

如果拷贝构造函数中的参数不是一个引用,即形如CClass(const CClass c_class),那么就相当于采用了传值的方式(pass-by-value),而传值的方式会调用该类的拷贝构造函数,从而造成无穷递归地调用拷贝构 造函数.因此拷贝构造函数的参数必须是一个引用   在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识. 但是如果我问你"拷贝构造函数的参数为什么必须使用引用类型?"这个问题, 你会怎么回答? 或许你会回答为了

android选择图片或拍照图片上传到服务器(包括上传参数)

http://blog.csdn.net/vipa1888/article/details/8213898 最近要搞一个项目,需要上传相册和拍照的图片,不负所望,终于完成了!  不过需要说明一下,其实网上很多教程拍照的图片,都是缩略图不是很清晰,所以需要在调用照相机的时候,事先生成一个地址,用于标识拍照的图片URI 具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 [java] view plaincopy package com.spring.sky.image.uploa

前端-js如何给匿名函数里的构造函数传参?

问题描述 js如何给匿名函数里的构造函数传参? (function() { function Fun(name) { this.name = name; } Fun.prototype.say = function() { console.log(this.name); } fun = new Fun(); })(); 想在这里调用,并传参数进去??? fun.say('qwe') 解决方案 (function(name) { function Fun(name) { this.name = n

ajax-关于Ajax传参数到Action问题,获取不到参数,

问题描述 关于Ajax传参数到Action问题,获取不到参数, $("#Sea").click(function(){ var Search = $("#Search").val(); alert(Search); $.ajax({ type: "get", url: "@SiteConfig.ProductSite/ProductList.aspx", jsonpCallback: "__ProductLists_

对象-为什么拷贝构造函数的参数类型不是引用 就会变成死循环的递归

问题描述 为什么拷贝构造函数的参数类型不是引用 就会变成死循环的递归 实在不理解这个递归的过程 01.#include 02.using namespace std; 03. 04.class CExample 05.{ 06.private: 07. int m_nTest; 08. 09.public: 10. CExample(int x) : m_nTest(x) //带参数构造函数 11. { 12. cout << "constructor with argument&q

c++中拷贝构造函数的参数类型必须是引用_C 语言

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识. 但是如果我问你"拷贝构造函数的参数为什么必须使用引用类型?"这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答.不过还好,我思索一下以后,发现这个答案是不对的. 原因:如果拷贝构造函数中的参数不是一个引用,即形如CClass(const CClass c_class),那么就相当于采用了传值的方式(pass-by-value),而传

const-C++传参数问题,提示private

问题描述 C++传参数问题,提示private 大牛们好: 我定义了一个类: class Course { public: Course(const string &courseName); 然后我在主函数里面传: Course course1("sggg"); Course course2("fffs"); 结果编译失败,提示: 错误 1 error C2248: "Course::~Course": 无法访问 private 成员(在

access-网站后太上传相片失败.打开网站出现如下问题

问题描述 网站后太上传相片失败.打开网站出现如下问题 Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC Microsoft Access 驱动程序] 不能使用 '(未知的)':文件已在使用中. /index.asp,行 5 解决方案 文件被占用,看看数据库访问后是不是没有关闭. 解决方案二: 第一次接触这个 什么都不会搞啊