注册 登录
编程论坛 C++教室

应该在哪加默认形参的问题,请教

沧声笑 发布于 2010-12-30 19:47, 506 次点击

#include<iostream>
#include<string>
using namespace std;
struct day
    {
    int year;
    int month;
    int daty;
} ;
class man
{    int number;
    string sex,id;
    day m;
public:

    man() {}
    man(man &p) {}
    void jin() {
    cout <<"请输入编号:"<<endl;
    cin >>number;
    cout <<endl;
    cout <<"请输入性别:(男,女)"<<endl;
    cin >>sex;
    cout <<endl;
    cout <<"请输入身份证号:"<<endl;
    cin >>id;
    cout <<endl;
    cout <<"请输入出生日期:年,月,日"<<endl;
    cin >>m.year>>m.month>>m.daty;
    cout <<endl;}
   void moren(int a=0,string b=0,string c=0)
   {number=a;sex=b;id=c;}


    void chu() {
        cout <<"编号为:"<<number<<endl;
        cout <<"性别为:"<<sex<<endl;
        cout <<"身份证号为:"<<id<<endl;
        cout <<"出生日期为:"<<m.year <<"年 "<<m.month<<"月 " <<m.daty<<"日 " <<endl;}
    ~man() {}
};
main()
{  
    man k;
     k.jin();
    k.chu();
        k.moren();
        k.chu();

}

此题要求用到构造函数,拷贝构造,带默认形参的函数成员等等,但是问题在于应该在哪里加默认形参的成员函数,红色部分是我的加的默认形参以及调用,但并不成功,那位能指点下,应该怎样加默认形参的成员函数
5 回复
#2
ml2325282010-12-30 20:42
string b=0,string c=0 ??你想付空值吗?下面的语句
string b="",string c=""
#3
zgxyz20082010-12-30 20:57
string 对象不能赋0,用""~
#4
沧声笑2010-12-30 21:51
回复 2楼 ml232528
确实如此,c++的字符串不是很熟,还有一个问题,struct day中的m怎样用默认的形参

    void moren(int a=0,string b="",string c="")
   {number=a;sex=b;id=c;}
在这里试了下,不知道怎样加入,请问该怎样加入m这个默认形参
#5
沧声笑2010-12-30 22:09
回复 3楼 zgxyz2008
确实如此,c++的字符串不是很熟,还有一个问题,struct day中的m怎样用默认的形参

    void moren(int a=0,string b="",string c="")
   {number=a;sex=b;id=c;}
在这里试了下,不知道怎样加入,请问该怎样加入m这个默认形参
#6
ml2325282010-12-30 22:12
几种方案
1 day 结构体当成类 提供默认构造函数
struct day
{
    day(){}
    day(int y,int m,int d):year(y),month(m),daty(d){}
    int year;
    int month;
    int daty;
} ;
    void moren(int a=0,string b="",string c="",day mm = day(1,2,3))
    {number=a;sex=b;id=c;memcpy(&m,&mm,sizeof(m));}
2 设置一个全局的day
    day g_day = {1,2,3};
......
    void moren(int a=0,string b="",string c="",day mm = g_day)
    {number=a;sex=b;id=c;memcpy(&m,&mm,sizeof(m));}
1