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

函数参数使用“Const”

函数参数使用“Const”

C++
德玛西亚99 2019-06-21 16:57:46
函数参数使用“Const”你要走多远?const?你只是做些功能const在必要的时候,或者你是否做了所有的猪,并使用它在任何地方?例如,假设一个简单的Mutator接受单个布尔参数:void SetValue(const bool b) { my_val_ = b; }那是const真的有用吗?就我个人而言,我选择广泛使用它,包括参数,但在这种情况下,我想知道它是否值得?我也很惊讶地发现你可以省略const函数声明中的参数,但可以将其包含在函数定义中,例如:.h文件void func(int n, long l);.cpp文件void func(const int n, const long l)这有什么原因吗?我觉得有点不寻常。
查看完整描述

3 回答

?
米琪卡哇伊

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

原因是参数的Const只在函数中本地应用,因为它正在处理数据的副本。这意味着函数签名实际上是相同的。不过,做很多这样的事可能是不好的风格。

除了引用和指针参数之外,我个人倾向于不使用Const。对于复制的对象来说,这并不重要,尽管它可以更安全,因为它表示函数中的意图。这真的是一个判断力的决定。我确实倾向于使用const_iterator,但是在循环某些东西时,我不打算修改它,所以我猜每个人都是自己的,只要严格维护引用类型的Const正确性。


查看完整回答
反对 回复 2019-06-21
?
青春有我

TA贡献1784条经验 获得超8个赞

“当参数通过值传递时,Const是没有意义的,因为您不会修改调用者的对象。”

不对。

这是关于自我记录你的代码和你的假设。

如果您的代码中有很多人在处理它,而且您的函数并不简单,那么您应该尽可能地标记“Const”Any和一切。在编写工业强度代码时,您应该始终假设您的同事是精神病患者,他们试图通过任何可能的方式来帮助您(特别是因为将来经常是您自己)。

另外,正如前面有人提到的,强权帮助编译器优化一些东西(尽管这是一个很长的机会)。


查看完整回答
反对 回复 2019-06-21
?
www说

TA贡献1775条经验 获得超8个赞

有时(太频繁了!)我必须解开别人的C+代码。我们都知道别人的C+代码几乎从定义上说是一片混乱:)因此,我破译本地数据流的第一件事是将常量在每个变量定义中,直到编译器开始运行。这也意味着Const-限定值参数,因为它们只是调用方初始化的漂亮局部变量。

啊,我希望变量是常量默认和可变对于非Const变量需要:)


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 599 浏览

添加回答

举报

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