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

  • 相关阅读:
    在HTML网页中巧用URL
    技术不是第一位,商业模式是第一位[转帖]
    SQL Server日期计算
    Ms XmlDom 异步装载Xml文件
    陆游词全集
    陈慧娴 3 In 1 MV珍藏集
    下大雪啦
    用Asp+XmlHttp实现RssReader功能
    双绞线的标准接法
    巧把Hotmail邮箱2M轻易扩容到25M
  • 原文地址:https://www.cnblogs.com/justkong/p/6323045.html
Copyright © 2011-2022 走看看