我試着理解什麼不同,如果我添加const或在返回函數時忽略它。讓我通過一個例子來解釋我的問題。返回const或non-const在主要類型中有什麼區別C++
const int foo()
{
return 3;
}
int main()
{
int check;
check=foo();
cout<<"before:"<<check<<endl;
check=1;
cout<<"after:"<<check<<endl;
return 0;
}
到現在爲止,我一直認爲,因爲我寫的常量富()我不能夠改變的檢查varaible,但是我編譯它,並沒有錯誤。
我想知道我通過在我的foo()函數之前編寫const獲得或放寬了什麼。
在此先感謝
它曾經被建議這樣做,以避免意外地分配給返回臨時:'FOO()= 10; //無法編譯。現在建議不要這樣做,因爲它禁止移動語義(即它意味着你必須將整個返回的臨時文件複製到某個局部變量中,而不是竊取它。不是說它在原始情況下有所不同,但作爲一般規則這很好)。在你的情況下,'check'是非''constst',並且被賦予與'foo'返回的'const'臨時相同的*值*。 – BoBTFish
可能duplicate的http://stackoverflow.com/questions/10177904/what-this-const-before-method-name-mean – Saqlain
對於「可能」的相當嚴格的定義 - 這是一個確切的愚蠢。 –