【发布时间】:2012-09-12 01:53:39
【问题描述】:
可能重复:
Should useless type qualifiers on return types be used, for clarity?
我对按值返回和返回 const 值感到困惑。例如,在任何函数中,一旦函数完成,所有局部变量都会超出范围。因此,如果我从函数返回一个值,它必须是通过副本传递,除非它是通过引用返回。因此,当这种情况发生时,该函数会返回一个可以稍后修改的副本。因此,即使将局部变量声明为 const,我也可以在另一个变量中读取它并轻松修改后者。
const int DoubleValue(int nX)
{
int nValue = nX * 2;
return nValue; // A copy of nValue will be returned here
} // n
我很困惑const 在这里是什么意思。 nValue const 在函数体中吗?如果我对z = DoubleValue(x); 进行分配,我显然可以修改z。
在什么情况下执行constness?对象 DoubleValue(x) 是 const 对象吗?它代表什么?
【问题讨论】:
-
请参阅stackoverflow.com/questions/1443659/…,了解何时会产生影响。
-
和
const int没有区别;如果您返回const char *或类似的东西,这很重要。const然后表示调用代码可能不会修改指向的值(字符串)。 -
@JonathanLeffler 是完全正确的;
const char *相当于char const *而不是char * const:-) -
这里有一个类似(但不太具体)的问题:Should useless type qualifiers on return types be used, for clarity?