• const成员函数和mutable关键字


    一、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关键字只是给了建模工具更多的设计约束和设计灵活性,而且程序员也可以把更多的逻辑检查问题交给编译器和建模工具去做,从而减轻程序员的负担。

  • 相关阅读:
    Java Swing3-MyDialog的基本实现
    Java IO4 实现凯撒密码加密解密文本文件
    POJ 3869 条件概率
    2017年校招全国统一模拟笔试(第三场)编程题集合
    POJ 2800 Joseph’s Problem 数论找规律
    数据结构期末考试再复习
    Java Swing2 基本登录框
    Java Swing1 基本框架
    Java 多线程1 烧水开水喝茶案例
    Java IO3 把一个图片写进txt,再写出还原图片
  • 原文地址:https://www.cnblogs.com/justkong/p/6323045.html
Copyright © 2020-2023  润新知