都是默认参数惹的祸

作者在对旧代码进行重构过程中,因函数参数增加及默认值设置不当,导致在条件判断中出现误用,进而引发调试难题。本文记录了这一经历,并分享了从中学到的经验教训。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天对以前的一些代码进行重构, 搞了个笑话,低级错误。。。

以前在类里面写了个函数, 叫bool A( B b),后来功能需要想添加一个参数,类型C*,

于是变成了bool  A(B b, C* c), 后来考虑到以前对这个函数的调用都是只有第一个参数的,于是又给第二个参数加了默认值 0 , bool  A( B b, C* c = 0);

但是在调用的时候闹笑话了, 由于A 是放在if  中的, b又是一个含了几对括号的表达式,导致没看清括号的匹配,写成了 if ( A( b), c),编译通过, 调试发现c本来不是0, 一传入就"变" 0 了,

 

郁闷了半天!!!!!!!

 

以后代码风格要改改了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值