簡體   English   中英

c ++中的const參數和const方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM