2011-02-24 36 views

回答

7

這是用於成員函數(在類或結構中)。這意味着該方法不會更改它所操作的實例的狀態(例如,不會更改任何成員變量)。

+4

除非它們被聲明爲可變 – 2011-02-24 14:27:18

+0

@Armen Tsirunyan:如果它們被聲明爲可變的,那麼在技術上它們不是對象邏輯狀態的一部分。 – 2011-02-24 16:48:37

+0

我在抱怨短語「不會更改任何成員變量」 – 2011-02-24 17:05:38

2

它表示它不會改變類的成員作爲副作用。

+1

除了可變成員 – 2011-02-24 14:27:36

1

const表示getPrice()不會修改實例字段,除非明確聲明爲mutable

+0

請問哪裏出錯? – Trinidad 2011-02-24 14:26:39

+0

二進制轉儲不保證在前後相同。該方法被允許更改聲明爲可變的成員。 – 2011-02-24 14:27:34

+0

你是對的,謝謝。 – Trinidad 2011-02-24 14:31:20

3

當你調用非靜態成員函數時,你總是在某個對象上調用它,對吧?該對象作爲參數傳遞(隱式)。例如,如果GetPrice是類X的方法,則它具有類型X&的隱式參數。然後該方法是const,隱式參數的類型爲const X &,因此成員函數不能更改其被調用的對象的任何數據成員,除非數據成員被聲明爲mutable