C++中const的使用!

1.const

#include<iostream>

int main(void)
{
    //const 定义常量 ---> const 意味只读,不能修改。

    const int a;
    int const b;
    //第一个  第二个意思是一样的,代表一个常整形数,不能修改。

    const int *c; //*c 代表一个指针,指向常整形,不能修改, c 能指向任意整形变量,可以修改。
    //第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改)。

    int * const d; //d 不能修改,*d能改。
    //第四个 d是一个常指针(指针变量不能被修改,但是它所指向的内存空间可以被修改)。

    const int * const e;
    //第五个 e是一个常指针,指向常整形,不能修改,*e 也不能修改 。

    return 0;
}

总结:左数右常(左右是 const 针对于 * 而言的)

2.mutable

可变数据成员
在了解const之后,必然会有小伙伴问:有没有办法既定义一个const类对象,又可以修改类中的某些变量,比如计数该函数被调用多少次?
当然可以,C++已经为你考虑好了如何解决此类问题。
答案就是使用关键字 mutable。
使用mutable修饰的成员数据,称作可变数据成员(mutable data member)。

1.mutable的使用

看个例子你就懂了:

class MyClass {
private:
    mutable size_t access_ctr;
public:
    void some_mem_fun() const {
        ++access_ctr;
    }
};

虽然some_mem_fun 被申明为const,但是可以修改本类中的mutable成员数据 access_ctr。

2.总结
可以通过使用 mutable 关键字来修改被const修饰的数据。除非必要,否则不要使用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值