返回内置类型的const值是一个好习惯吗?
原因是:
const int F()
{
}
int y;
F(x) = y;
如果返回值为const,则上述代码将无法编译。然而
如果不是,F(x) = y;
是一个非常隐蔽的错误。
因为没有意义为函数赋值,我在想 总是返回内置类型的const值是一个很好的习惯吗? 如果我总是为内置类型返回一个const值,那有什么问题吗?
答案 0 :(得分:5)
const
表示在对象的生命周期内,对象的值不会改变。
标准本身指出,因此,const对非类或非数组prvalues的prvalues没有意义。这样的表达式从不引用对象(至少如果表达式源自用户代码。语言本身可能在引用绑定期间创建prvalues,它神奇地引用临时对象。但是,恕我直言,这些应该是xvalues)。因此,既然没有对象,就没有生命。因此,没有什么可以被称为“const”。
答案 1 :(得分:3)
无论如何,分配给这种类型的函数调用是不合法的。如果我尝试,g ++会给我这个错误信息:
test.cpp: In function ‘int main()’:
test.cpp:8:8: error: lvalue required as left operand of assignment
所以你不需要声明返回值const
只是为了从编译器中获得合适的诊断。