3

为内置类型返回一个 const 值是一个好的习惯吗?

原因是:

const int F()
{
}

int y;
F(x) = y;

如果返回值为 const,上述代码将无法编译。但是,如果不是,F(x) = y;则是一个非常隐蔽的错误。

由于为函数赋值没有意义,我在想总是为内置类型返回一个 const 值是一个很好的习惯吗?如果我总是为内置类型返回一个 const 值,有什么问题吗?

4

2 回答 2

5

const意味着在对象的生命周期内,对象的值不会改变。

标准本身指出,因此,const 对非类或非数组纯右值的纯右值没有意义。这样的表达式从不引用对象(至少如果表达式源自用户代码。语言本身可能会在引用绑定期间创建prvalues,它神奇地引用临时对象。恕我直言,不过,这些应该是xvalues)。因此,既然没有对象,就没有生命周期。因此,没有什么可以被认为是“const”。

于 2012-10-31T09:40:25.880 回答
3

无论如何,分配给这种类型的函数调用是不合法的。如果我尝试,g++ 会给我这个错误消息:

test.cpp: In function ‘int main()’:
test.cpp:8:8: error: lvalue required as left operand of assignment

因此,您不需要const仅仅为了从编译器获得合适的诊断而声明返回值。

于 2012-10-31T01:55:33.020 回答