9.C++ const修饰成员函数

1.常函数:   

        在C++中,当成员函数被标记为const时,这个函数被称为常量成员函数或。常函数的特点是在函数体内不会修改类的成员变量(除非成员变量被声明为mutable)。

        

常函数的声明格式如下:

void functionName() const;

        this指针的本质是指针常量,指针常量的指向是不可以修改的,就相当于:

Person *const this;

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

        在常函数中,通过this指针访问的成员变量都被视为常量,并且不允许对它们进行修改,除非将特定成员变量声明为mutable关键字。

例如:

class MyClass {
public:
    int a;
    mutable int b;

    void modifyA() const {
        // 不允许修改 a
        // a = 10;  // 错误

        // 允许修改 b
        b = 20;
    }
};

        在上面的代码中,a是常量成员变量,因此在常函数modifyA()中不能对其进行修改。然而,b被声明为mutable(adj.可变的),所以即使在常函数中也可以对其进行修改。

2.常对象:

        常对象是指用关键字const修饰的对象,也称为常量对象。常对象的成员变量在对象创建后就不能被修改。

        

        在C++中,使用const关键字可以将对象声明为常对象。常对象只能调用常量成员函数,因为常对象不允许对其成员变量进行修改。

例如:

class MyClass {
public:
    int a;
    void modifyA() {
        a = 10;
    }
    void printA() const {
        // 常函数可以被常对象调用
        // 常函数不会修改对象的成员变量
        cout << "a = " << a << endl;
    }
};

int main() {
    const MyClass obj;  // 声明一个常对象
    obj.a = 5;  // 错误,常对象的成员变量不可修改
    obj.modifyA();  // 错误,常对象只能调用常量成员函数
    obj.printA();  // 正确,常对象可以调用常量成员函数
    return 0;
}

3.总结:

1.常函数:

        (1)指const修饰的成员函数

        (2)常函数不会修改类的成员变量(除非成员变量被声明为mutable)

2.常对象:

        (1)指用关键字const修饰的对象

        (2)常对象的成员变量在对象创建后就不能被修改

        (3)常对象只能调用常量成员函数,因为常对象不允许对其成员变量进行修改。

        

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuga...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值