類的常量成員函式
阿新 • • 發佈:2021-12-17
引子:
一個類的例項呼叫成員函式時,成員函式通過一個名為this的額外的隱式引數訪問呼叫它的那個例項。如果某個物件呼叫成員函式,這個物件的地址會用來初始化this。隱形引數this的預設型別是MyClass *const
,即可通過this修改物件的值。
正文:
我們在呼叫成員函式時,發現有些函式只讀或只寫,有些函式又讀又寫。對於不需要對物件的值進行更改的函式,我們可以通過更改this的預設型別宣告一種叫做常量成員函式的函式,這種函式不允許修改this指向的物件的值。宣告形式如下: MyClass::MyFun(...) const
。即在引數列表之後新增一個const 關鍵字。實際上隱式的把this的型別宣告成了 const Myclass *const
-
注意隱式的this引數不會出現在函式引數列表中,像如下的程式碼顯式定義自己的this是錯誤的
std::string Sales_data::isbn(const Sales_data *const this) {return this->isbn;}