函数参数使用“Const”

函数参数使用“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)

这有什么原因吗?我觉得有点不寻常。


德玛西亚99
浏览 600回答 3
3回答

米琪卡哇伊

原因是参数的Const只在函数中本地应用,因为它正在处理数据的副本。这意味着函数签名实际上是相同的。不过,做很多这样的事可能是不好的风格。除了引用和指针参数之外,我个人倾向于不使用Const。对于复制的对象来说,这并不重要,尽管它可以更安全,因为它表示函数中的意图。这真的是一个判断力的决定。我确实倾向于使用const_iterator,但是在循环某些东西时,我不打算修改它,所以我猜每个人都是自己的,只要严格维护引用类型的Const正确性。

青春有我

“当参数通过值传递时,Const是没有意义的,因为您不会修改调用者的对象。”不对。这是关于自我记录你的代码和你的假设。如果您的代码中有很多人在处理它,而且您的函数并不简单,那么您应该尽可能地标记“Const”Any和一切。在编写工业强度代码时,您应该始终假设您的同事是精神病患者,他们试图通过任何可能的方式来帮助您(特别是因为将来经常是您自己)。另外,正如前面有人提到的,强权帮助编译器优化一些东西(尽管这是一个很长的机会)。

www说

有时(太频繁了!)我必须解开别人的C+代码。我们都知道别人的C+代码几乎从定义上说是一片混乱:)因此,我破译本地数据流的第一件事是将常量在每个变量定义中,直到编译器开始运行。这也意味着Const-限定值参数,因为它们只是调用方初始化的漂亮局部变量。啊,我希望变量是常量默认和可变对于非Const变量需要:)
打开App,查看更多内容
随时随地看视频慕课网APP