【发布时间】:2017-02-15 07:24:42
【问题描述】:
我认为我没有掌握返回 const 的正确想法。
如果我有一个返回 const 值的函数,是不是意味着我在返回它之后就无法更改该值?
为什么编译器允许我将 const 转换为非 const 变量?
或者它只适用于 const 指针?
const int foo(int index) {
return ++index;
}
int main(){
int i = foo(1); // why can I do this?
++i;
return 0;
}
【问题讨论】:
-
一个
const int可以很容易地被复制,当你将它分配给i时会发生这种情况。const指针是不同的,因为您指向 at 的是const,除非您有const X* const,在这种情况下,指针和目标都是const。有关更多说明,请参阅examples like this。在任何情况下返回const int都是毫无意义的,因为它们的复制成本太低了。 -
那么按值返回 const 没用? @tadman
-
是的,如果你要复制它几乎无关紧要。在不一定需要复制的地方返回
const引用更为常见。 -
这是重复的,我投票删除当前帖子。谢谢。
标签: c++