[英]const parameter and const method in c++
我有一個這樣的課:
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會產生這樣的錯誤?
你需要使成員函數const
,而不是返回類型:
int GetValue() const;
這使得可以在const
實例(或通過const
引用或指針)上調用此成員。
注意:當您按值返回時,返回的東西的常量與返回它的對象的常量分離。 實際上,您不太可能希望返回類型為const
。
你將int設置為const,嘗試使方法const如下:
const int GetValue() const
{
return 2;
}
有兩個問題,一個可見性問題(你的const int GetValue()
函數因私有而不可見)以及你正在調用非const函數(它可以對作為成員函數的對象執行修改) )
const int GetValue()
從一個不斷引用的類
const MyClass &myClass
你基本上要求“ 不要修改這個對象,不管怎么說讓我調用一個不保證這個的功能 ”。
你沒有連貫性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.