【发布时间】:2012-10-31 01:51:16
【问题描述】:
为内置类型返回一个 const 值是一个好的习惯吗?
原因是:
const int F()
{
}
int y;
F(x) = y;
如果返回值为 const,上述代码将无法编译。然而
如果不是,F(x) = y; 是一个非常隐蔽的错误。
既然给函数赋值没有意义,我在想 始终为内置类型返回一个 const 值是一个好习惯吗? 如果我总是为内置类型返回一个 const 值,有什么问题吗?
【问题讨论】:
-
IIRC,
F(x) = y即使没有const修饰符也不会编译,因为F(x)不是左值。 -
对于内置的 const 实际上是多余的。 IT 曾经 是很好的建议,对于用户定义的类型,将它们作为 const 返回以匹配此行为。然而,对于 C++11 移动语义,这最终是一个糟糕的主意。所以永远不要将值作为 const 返回。 (换句话说,告诉你的调用者它是否可以改变它的值的副本并不是真的取决于你。)
-
@fred 骗子在哪里?您在询问编译器错误。但是这个问题询问了一些关于 c++ 的问题。我真的没能察觉到这种欺骗。