为了账号安全,请及时绑定邮箱和手机立即绑定

求助关于构造函数的默认参数问题,麻烦帮忙看一下~

求助关于构造函数的默认参数问题,麻烦帮忙看一下~

动漫人物 2021-11-24 22:15:43
在name.h中定义类class,他有三个构造函数Name();Name(char *first);Name(char *first, char *last);这三个构造函数的实现在name.cpp中。(这时程序没有问题)如果利用默认参数,构造函数为Name(char *first="default",char *last="default"); (在name.h中)Name::Name(char *first="default",char *last="default") (name.cpp中为){strcpy(firstname,first);strcpy(lastname,last);}程序中出现两个问题error C2572: 'Name::Name' : redefinition of default parameter : parameter 2c:\documents and settings\administrator\桌面\name.h(11) : see declaration of 'Name::Name'error C2572: 'Name::Name' : redefinition of default parameter : parameter 1c:\documents and settings\administrator\桌面\name.h(11) : see declaration of 'Name::Name'怎么改正在这种情况下才能正常运行如果程序为Name(char *first="default",char *last="default") (name.h中){strcpy(firstname,first);strcpy(lastname,last);}则程序没没问题
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

构造函数定义改为

Name::Name(char *first,char *last) (name.cpp中为)
{
strcpy(firstname,first);
strcpy(lastname,last);
}

查看完整回答
反对 回复 2021-11-28
?
开满天机

TA贡献1786条经验 获得超12个赞

我觉得不必使用默认值,你可以在构造函数Name()中实现

Name::Name()
{
strcpy(firstname,"default");
strcpy(lastname,"default");
}

查看完整回答
反对 回复 2021-11-28
?
墨色风雨

TA贡献1853条经验 获得超6个赞

解决办法:
Name(char *first="default",char *last="default");(name.h中)

Name::Name("default", "default") (name.cpp中为)
{
strcpy(firstname,first);
strcpy(lastname,last);
}

应该就OK了



查看完整回答
反对 回复 2021-11-28
  • 3 回答
  • 0 关注
  • 440 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信