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

  • 相关阅读:
    生成函数初步
    Lg 8月赛(构造+交互)
    wqs 二分学习笔记
    FastAPI 学习之路(十六)Form表单
    线性代数入门
    Oracle-PDB拔插
    MySQL-audit审计插件
    MySQL-用户与权限管理
    MySQL-存储引擎
    MySQL-逻辑结构
  • 原文地址:https://www.cnblogs.com/justkong/p/6323045.html
Copyright © 2011-2022 走看看