【C++】const修饰成员函数

const修饰成员函数

常函数:

成员函数后加const后我们称为这个函数为常函数

常函数内不可以修改成员属性

成员属性声明时加关键字mutable后,在常函数中依然可以修改

c 复制代码
class Animal {
public:
    void fun1(){
       //这是一个普通的成员函数         
    }
    void fun2() const{
        //这是一个常函数
        //m_A = 100;//报错,常函数不可修改成员属性
        m_B = 100;//正常,常函数可以修改mutable修饰的成员属性
    }

public:
    int m_A;
    mutable int m_B; //可修改 可变的
}

常对象:

声明对象前加const称该对象为常对象

常对象只能调用常函数

c 复制代码
int main(){
    const Animal dog;//实例一个常对象
    //dog.mA = 100; //常对象不能修改成员变量的值,但是可以访问
    dog.m_B = 100; //但是常对象可以修改mutable修饰成员变量
    //dog.fun1();//报错,常对象只能调用常函数
    dog.fun2();//常对象只能调用常函数
}
相关推荐
不会就选b3 小时前
C++补充部分(一)--lambda 表达式
开发语言·c++
丰色木夕11 小时前
Ubuntu22.04下源码编译安装USD-Brep
c++·ubuntu·nvidia·usd-brep
衍玊13 小时前
多路转接原理与应用
c++
himobrinehacken15 小时前
位运算揭秘:左右移与符号位陷阱
c语言·c++·算法·安全
Android小码家18 小时前
Vehicle 实战 自定义属性+测试demo
java·c++·framework·vhal·vehicle
hetao173383718 小时前
2026-10-19 hetao1733837 的刷题记录
c++·算法
夏虫不可与之言冰18 小时前
第三课 点亮 LED 与定时器非阻塞闪烁
c语言·c++·vscode·单片机·嵌入式硬件·物联网
辛苦才能18 小时前
C++ 哈希表深度解析:删除为什么必须打标记,负载因子为什么卡 0.7
开发语言·数据结构·c++·算法
miller-tsunami18 小时前
STL简介&string相关知识点
开发语言·c++·string
坤坤子吖18 小时前
Linux 线程同步与互斥——互斥锁
linux·服务器·c++·笔记·学习