C++_const_修饰成员函数(常对象,常函数)

this指针是一个指向当前对象的指针。在C++中,this指针通常用于访问类的成员变量和成员函数。当一个成员函数被调用时,编译器会自动将当前对象作为第一个参数传递给该函数,这个参数就是this指针。

this指针的本质是指针常量,指针的指向是不可以修改的

在成员函数后面加上const,修饰的是this指向,让指针指向的值也不可以修改。

在C++中,const关键字用于修饰成员函数,成员函数后面加const,称为常函数

1、该成员函数不能修改类的成员变量(变量)。当一个成员函数被声明为const时,它只能访问常量成员变量,而不能修改它们。这有助于确保类的成员函数不会意外地改变对象的状态。

2、成员变量(属性)加关键字mutable后,在常函数中依然可以修改

例如,假设有一个名为Person的类,其中包含一个名为m_age和m_b的成员变量和一个名为setAge的成员函数。

class Person {
public:
    void setAge(int newAge) const {
        this->m_age = newAge; // 这里可以不正常赋值,因为函数是const的
 this->m_b = newAge; // 这里可以正常赋值,因为成员变量是const的
    }
    int m_age;
    mutable int m_b
};

对象前面加const称该对象为常对象

1、常对象是指对象的值在创建后不能被修改。在C++中,如果一个对象被声明为常对象,那么它的成员变量也不能被修改。

2、成员变量(属性)加关键字mutable后,在常对象中依然可以修改

例如以下test02的代码

class person {
public:
    void setAge(int newAge) const {
        this->m_age = newAge; // 这里可以正常赋值,因为函数是const的
    }
    int m_age;
    mutable int m_b;
};
void test02()
{
    const person p;
    p.m_age=10://错误
    p.m_b=10;//正确,可以修改,因为在类中mutable int m_b;
        
}

常对象只能调用常函数,如下述代码中test02中的注释部分

class person {
public:
    void setAge(int newAge) const {
        this->m_age = newAge; // 这里可以正常赋值,因为函数是const的
    }
    void fun()
    {
        
    }
    int m_age;
    mutable int m_b;
};

void test02()
{
    const person p;
    p.m_age=10://错误
    p.m_b=10;//正确,可以修改,因为在类中mutable int m_b;
    p.setAge(100);//正确,常变量只能调用常函数
    p.fun();//错误,常变量只能调用常函数,不可调用其他
        
}

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值