【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();//常对象只能调用常函数
}
相关推荐
Lzg_na13 小时前
僵尸进程、孤儿进程、守护进程:含义、区别与生命周期详解
c++
zhanghaha131413 小时前
C++ 的类是什么(新手保姆讲解,配合 Qt 对照理解)
c++
aqiu11111113 小时前
【C++算法打怪专栏】LeetCode 402. 移掉 K 位数字(单调栈 + 贪心)
c++·算法·leetcode
(Charon)14 小时前
【C++面试】线程并发与异步:区别、实现原理及使用场景
开发语言·c++
JMchen14 小时前
实战项目一——实现一个高性能图片滤镜App
android·c++·性能优化
码匠许师傅14 小时前
【C++三方组件】libpqxx:PostgreSQL 的 C++ 客户端
开发语言·c++·postgresql
H.莓飛15 小时前
【C++】内存管理
linux·开发语言·jvm·c++·visual studio
longlongzihan15 小时前
从LeetCode 19. 删除链表的倒数第 N 个结点深入理解“哨兵节点”
c++·算法·leetcode·链表
爱吃提升16 小时前
Dev-C++ 5.11 完整版快捷键大全(信奥/初学适用)
c语言·c++
SWAGGY..17 小时前
【C++进阶】:(10)哈希表的原理与实现——从哈希函数到哈希桶
c++·哈希算法·散列表