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

在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 2
c:\documents and settings\administrator\桌面\name.h(11) : see declaration of 'Name::Name'
error C2572: 'Name::Name' : redefinition of default parameter : parameter 1
c:\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);
}
则程序没没问题

动漫人物
浏览 445回答 3
3回答

红糖糍粑

构造函数定义改为Name::Name(char *first,char *last) (name.cpp中为){strcpy(firstname,first);strcpy(lastname,last);}

开满天机

我觉得不必使用默认值,你可以在构造函数Name()中实现Name::Name(){strcpy(firstname,"default");strcpy(lastname,"default");}

墨色风雨

解决办法:Name(char *first="default",char *last="default");(name.h中)Name::Name("default", "default") (name.cpp中为){strcpy(firstname,first);strcpy(lastname,last);}应该就OK了
打开App,查看更多内容
随时随地看视频慕课网APP