善用const

首先,有些人会问?为啥要使用const,我使用宏定义不是照样可行?

开发C++已有五年多的时间了,有时当遇到需要定义常量时,总有一个问题一直很疑惑,到底是用宏定义#define,还是用const修饰。现在终于有了答案,废话不多说,先上代码

#define CALL_WITH_MAX(A,B) F((A) > (B) ?(A) : (B));

光看这个宏,就有太多的缺点,首相你要使用它,不能忘记加小括号。即使你加了小括号,也会引起非常严重的错误

int A=5,B=0;

CALL_WITH_MAX(++A,B);//A将会递增2次

CALL_WITH_MAX(++A,B+10); //A将递增1次

从上面的验证不难看出,A的递增并非是我们想要的结果。

那么,有没有更好的办法来避免这种情况呢?

再看下面的代码:

template<typename T>

inline void CALL_WITH_MAX(const T& A,const T& B) {

f( A > B ? A :B);

}

有人会问,为啥这么做就能避免上面的情况发生呢?

主要是因为当用const 修饰符时,就等于你告诉编译器说:嘿,我在这加const了哈,值不能被修改了。

所以说,养成用const的良好习惯,对你的代码效率会有很大的提升,也使你的代码的错误几率降低。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值