const成員函式和mutable關鍵字

2022-09-06 03:06:06 字數 819 閱讀 5167

一、const成員函式

class myclass

public:

void fun() const

private:

int m_nvalue;

const成員函式內不能修改成員變數的值,也不能呼叫非const成員函式。const物件只能呼叫const成員函式。

二、mutable關鍵字

class myclass

public:

void show()const;

private:

int m_value;

mutable int m_showcount;

myclass::show()

m_value=1;//錯誤,不能在const成員函式中修改普通變數

m_showcount++;//正確

mutable只能修飾非靜態成員變數。被mutable修飾的變數,將永遠處於可變的狀態,即使在乙個const函式中,甚至結構體變數或者類物件為const,其mutable成員也可以被修改。

三、為什麼要使用const和mutable

保護類的成員變數不在成員函式中被修改,是為了保證模型的邏輯正確,通過用const關鍵字來避免在函式中錯誤的修改了類物件的狀態。並且在所有使用該成員函式的地方都可以更準確的**到使用該成員函式帶來的影響。而mutable則是為了能夠突破const的封鎖線,讓類的一些次要的或者輔助性的成員變數隨時可以被更改。沒有使用const和mutable關鍵字當然沒有錯,const和mutable關鍵字只是給了建模工具更多的設計約束和設計靈活性,而且程式設計師也可以把更多的邏輯檢查問題交給編譯器和建模工具去做,從而減輕程式設計師的負擔。

const成員函式

prime c 在類sales item中,same isbn函式定義如下 bool sales item same isbn const sales item rhs const const 成員函式的引入 跟在 sales item 成員函式宣告的形參表後面的 const 所起的作用了 cons...

const成員函式

我們知道,在c 中,若乙個變數宣告為const型別,則試圖修改該變數的值的操作都被視編譯錯誤。例如,cpp view plain copy const char blank blank n 錯誤 物件導向程式設計中,為了體現封裝性,通常不允許直接修改類物件的資料成員。若要修改類物件,應呼叫公有成員函...

const成員函式

一.關於const成員函式的呼叫 const物件只能呼叫const成員函式 cpp view plain copy include using namespace std class a void fun intmain 輸出 const 成員函式 但是如果把第以1個fun注釋掉就會出錯 error...