【C++】关于编译器错误:error C2572 重定义默认参数 的说明

今天看完了《C++ Primer Plus》的第九章,想自己写个多文件的项目来练练手。好不容易写完后,却发现出现下面的错误:

错误信息:

1>------ 已启动生成: 项目: ProjectStudying, 配置: Debug Win32 ------
1>  functions.cpp
1>e:\myprojects\projectstudying\projectstudying\functions.cpp(16): error C2572: “update”: 重定义默认参数 : 参数 5
1>          e:\myprojects\projectstudying\projectstudying\header.h(17) : 参见“update”的声明
1>e:\myprojects\projectstudying\projectstudying\functions.cpp(16): error C2572: “update”: 重定义默认参数 : 参数 4
1>          e:\myprojects\projectstudying\projectstudying\header.h(17) : 参见“update”的声明
1>e:\myprojects\projectstudying\projectstudying\functions.cpp(16): error C2572: “update”: 重定义默认参数 : 参数 3
1>          e:\myprojects\projectstudying\projectstudying\header.h(17) : 参见“update”的声明
1>e:\myprojects\projectstudying\projectstudying\functions.cpp(16): error C2572: “update”: 重定义默认参数 : 参数 2
1>          e:\myprojects\projectstudying\projectstudying\header.h(17) : 参见“update”的声明
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
代码片段:
//函数原型
void update(basicInfo & someone,char* name = "",int age = 0,double weight = 0.0,double height = 0.0);

//函数定义
void update(basicInfo & someone,char* name = "",int age = 0,double weight = 0.0,double height = 0.0)
{
	if (name != "" && age != 0 && weight !=0.0 && height != 0.0)
	{
		someone.name = name;
		someone.age = age;
		someone.height = height;
		someone.weight = weight;
	}
}

这可叫我一阵头疼啊快哭了,我仔细看了错误信息,其实只有一个错误:重定义默认参数。

嗯,我看了看函数原型和定义,发现我两次都使用了默认参数,会不会是这里出了问题??

我试着将函数原型的默认参数删掉了,运行一下,发现成功了!大笑

这让我欣喜万分,至少我找的出错的原因了,于是我又将原型的默认参数保留了下来,再将函数定义的默认参数删掉,运行,又成功了!大笑

至此,重定义默认参数的问题已经被我误打误撞的解决了,其实删掉原型还是定义部分的默认参数,看个人的喜好罢了,只不过要认识到:

默认参数只能出现一次!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值