【发布时间】:2013-10-25 07:49:53
【问题描述】:
我试图了解如果我添加 const 或在返回函数时忽略它会有什么不同。让我通过一个例子来解释我的问题。
const int foo()
{
return 3;
}
int main()
{
int check;
check=foo();
cout<<"before:"<<check<<endl;
check=1;
cout<<"after:"<<check<<endl;
return 0;
}
到目前为止,我一直认为,由于我编写了 const foo(),我无法更改检查变量,但是我编译它并没有出错。
我想知道在我的 foo() 函数之前写 const 会得到什么或失去什么。
提前致谢
【问题讨论】:
-
曾经建议这样做,以避免意外分配给返回的临时:
foo() = 10; // fails to compile。现在建议不要这样做,因为它禁止移动语义(即,这意味着您必须将整个返回的临时复制到某个局部变量中,而不是窃取它。并不是说它在原始情况下有所不同,而是作为一般规则很好)。在您的情况下,check不是const,并且被赋予与foo临时返回的const相同的值。 -
对于“可能”的相当严格的定义 - 这完全是一个骗局。