实参与形参不匹配,C++

img


这个错误应该怎么解决呀,默认实参与形参不匹配。求各位解决方法

构造函数参数列表中不支持对参数使用=初始化
学习一下构造函数初始化列表的语法

用 string 类型来定义字符串变量

为什么一定要这么写呢。
你就直接写

person::person(char *num,char *name....)  //这样就可以

可以这样来进行写

class Person
{
    Person(char * num="");
};

Person::Person(char* num)
{

}

再实现的时候是不需要添加默认参数的,只需要再声明构造函数的时候设置默认参数就可以了。
另外,把char * NUM =" "改成 const char * NUM=" "
其它位置修改方法都一样,添加const关键字就可以了。
正确的写法应该如下:

class person
{
public:
    person(const char* NUM = " ", const char* NAME=" ", const char* SEX = " ", const char* AGE = " ", const char* STATUS = " ", const char* EDUCATION = " ");
    //....其它函数
};


person::person(const char* NUM, const char* NAME,  const char* SEX, const char* AGE, const char* STATUS, const char* EDUCATION)
{
    //
}

自己写进程序里的字符串,不赋值给变量,它就单纯是一个数据,你想用一个指针去存储这个常量逻辑上就不行,指针储存的是地址,这样一个常量它有地址吗?

1.使用TCHAR 代替char
2.使用swprintf_s代替sprintf_s
3.使用TEXT函数或者是_L修饰const char[]类型的字符串