2009-12-04 36 views

回答

12

使所有成員函數const。這是這項工作的唯一機制,而且工作得很好。如果你也讓他們private你完全覆蓋。

如果由於某種原因你覺得被迫標記他們受到保護,那麼情況會更復雜。

您將需要各個字段const,反過來,這將需要您通過成員初始化列表,或在構造一個const_cast初始化它們。或者也許是一個可變的ctor,但我不確定是否有這樣的事情。

+0

謝謝,哎呀,爲什麼我沒有得到它第一洛茨? – itsaboutcode 2009-12-04 22:08:43

+0

因爲C++使用'const'來表示太多稍微不同的事情。 – bmargulies 2009-12-04 22:09:25

+0

不正確。一個繼承給定類的類將能夠通過成員函數改變成員。 – 2009-12-04 22:10:05

6

聲明成員爲const。

+0

你的意思是成員函數,對吧? – 2009-12-04 22:09:29

+1

我個人是按upvv爲「成員」,而不是「成員函數」 – 2009-12-04 22:19:47

+0

如果複雜的const成員,初始化變得非常混亂。 Chacun一隻兒子山羊。 – bmargulies 2009-12-04 22:27:05

1

作爲一個建議,該方法應該後綴const,因爲它們不會更改成員(數據)。這可能是多餘的,但它會通知此類的用戶。

派生類只能改變父(超類)的成員,如果訪問被標記爲protectedpublic和成員不是const。然而,使用指針和轉換來改變數據的方法有很多,但原則是不要修改const對象。

2

你可以簡單地宣佈,你有興趣保持不變爲const的類的實例:

const Person p("fred"); 
0

要做到這一點是通過聲明的方式(S)爲const,像這樣的方式:

void f() const; 

但是,重要的是要注意標記爲可變的成員可能仍然會被更改 - 即使通過const方法。有關可變關鍵字的更多信息,您可以閱讀this

相關問題