程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Bill學C++ 第二季之mutable 的關鍵字

Bill學C++ 第二季之mutable 的關鍵字

編輯:關於C++

零、文章來由

打算將基礎知識在看書的同時系統的整理一下,方便大家也方便自己。整理的知識盡量參照書本知識,比網上獲取的資料有更高的可信度。

一、作用

mutable 用來解決常函數中不能修改對象的數據成員的問題。

如果在一些情況下,希望在常函數中仍然可以修改某個成員變量的值,就在該變量前加上mutable。能在保證常量對象大部分數據成員仍然“只讀”情況下,實現對個別成員的修改。

#include 
#include 
using namespace std;

class Student
{
    string Name; //默認為private
    int times_of_getname;
public:
    Student(char *name)
        :Name(name),times_of_getname(0) {

    }

    string get_name() {
        times_of_getname++;
        return Name;
    }

    void PrintTimes() const {
        cout<

如上程序會報錯,因為常量對象s(信息不能被修改的學生實體),調用 非const 函數 get_name(),但是如果將 get_name() 改為 const,有無法修改 times_of_getname。

但如果修改為:

mutable int times_of_getname;

string get_name() const{
}

即可

二、使用注意事項

使用關鍵字mutable要注意以下幾點:

(1)mutable 只用於類的非靜態和非常量數據成員。

(2)mutable 關鍵字提示編譯器該變量可以被類的const函數修改。

(3)一個類中,用mutable修飾的變量只能是少數,或者根本不使用,大量使用代表程序設計上的缺陷。


參考資料

[1]陳剛.C++高級進階教程[M].武漢:武漢大學出版社,2008.

   
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved