2011-10-28 137 views
-4

我有一個令人困惑的C++ const成員函數

上一頁碼的語法錯誤:

class A { 
public: 
    void process(const string& str) {}; 
}; 

我有

A a; 
a.process("abcd"); 

一切都很好 現在我改變進程成員函數來a const

void process(const string& str) const {}; 

現在 a.process("abcd");得到一個關於str是一個常量char [5]的編譯錯誤...

const const添加如何影響語法錯誤。我認爲只有const(在這種情況下)意味着成員變量不會改變?

有關這方面的想法?

+1

請發佈可顯示問題的compilable。如此一來,甚至很難猜測你所看到的,更不用說它是什麼造成的。 –

+1

你正在做的事情與你在這裏告訴的不同,const函數沒有問題:http://ideone.com/0RXZl –

+0

你說你看到「編譯錯誤」....請告訴我們* *編譯器錯誤是什麼,它指的是哪一行。 – abelenky

回答

2

const添加到方法聲明的末尾不會改變str參數的語義。其他事情正在發生,或者編譯器有一個錯誤。

0

它應該工作得很好。因此,您還做了一些影響結果的其他修改。

0

添加const修飾你的成員函數是指物體上您的呼叫你的函數可以是const:

const A a; 
a.process("abcd"); 

它沒有任何與您的常量字符數組。