我有一類這樣的:常量參數和C++中const的方法
class MyClass
{
const int GetValue()
{
return 2;
}
}
,我把它傳遞給一個函數是這樣的:
void Test(const MyClass &myClass)
{
int x=myClass.GetValue();
}
但我收到此錯誤:
The object has type qualifiers that are not compatible with member function Object type is const MyClass
我知道,如果我定義函數是這樣的:
void Test(MyClass &myClass)
但我想知道爲什麼加入常量應該產生這樣的錯誤?
它一般不返回一個'const'值(儘管它並不真正的問題一個簡單的類型,比如'int')一個好主意。 – 2014-08-27 13:37:49
@MikeSeymour:有趣的一點。爲什麼? – Jepessen 2014-08-27 13:42:11
@Jepessen:因爲它禁止移動語義:'const'返回值不能移出,所以'x = const_thing()'需要一個副本。對int不是問題,但如果你返回一個大的數據結構可能會導致性能問題。 – 2014-08-27 13:44:47