【发布时间】:2010-09-12 03:36:42
【问题描述】:
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)
这是有原因的吗?这对我来说似乎有点不寻常。
【问题讨论】:
-
我不同意。 .h 文件也必须具有 const 定义。如果没有,那么如果将 const 参数传递给函数,编译器将产生错误,因为 .h 文件中的原型没有 const 定义。
-
我同意。 :-) (有问题,而不是最后一条评论!)如果不应该在函数体中更改值,这可以帮助阻止愚蠢的 == 或 = 错误,你不应该在两者中都放 const,(如果它是按值传递的,否则你必须这样做)不过还不足以引起争论!
-
@selwyn:不过,即使您将 const int 传递给函数,它也会被复制(因为它不是引用),因此 const 并不重要。
-
这个问题发生了同样的争论:stackoverflow.com/questions/1554750/…
-
我意识到这篇文章已经有几年了,但作为一个新程序员,我很想知道这个问题,我偶然发现了这个对话。在我看来,如果一个函数不应该改变一个值,无论是引用还是值/对象的副本,它都应该是 const。它更安全,它是自记录的,而且它对调试更友好。即使对于只有一个语句的最简单的函数,我仍然使用 const。