c++学习:const关键字

const关键字可以修饰类的:

  • 数据成员
  • 成员函数
  • 对象 

const修饰类的数据成员

示例:

class A
{
public:
    A():num(100)
    {
    
    }
private:
    const int num;
};

注意: 

  • 在定义数据成员前用const修饰
  • 被const修饰后的数据成员只能读取,不能修改
  • 定义的数据成员必须要在参数列表上初始化,因为如果不在参数列表上初始化,那对象分配完空间后,你就不能对他赋值了。

const修饰类的成员函数

示例:

class A
{
public:
    A()
    {
    
    }
    void test() const
    {

    }
};

注意: 

  • 在定义成员函数的参数括号后用const修饰
  • void test() const{}等同于void test(const A *this){},A是自己的类,
    • 当调用函数的时候是把自己对象的地址传进this里
    • this又被const修饰
    • 只能读取类中的数据,不能修改类中的数据
    • 不能在函数里调用非const函数
  • 被const修饰后的函数只能读取类中的数据,不能修改类中的数据
  • 不能在const函数里调用非const函数

 应用场景:

         只需要返回成员数据时就可以使用const来修饰函数,以免改动数据

const修饰类的对象

示例:

class MyClass {
public:
    void foo() {
        // 非const成员函数
    }

    void bar() const {
        // const成员函数
    }

    int getValue() const {
        return value;
    }

private:
    int value;
    const int value1;
};

int main() {
    const MyClass obj;

    obj.bar();            // 可以调用const成员函数
    obj.getValue();       // 可以调用const成员函数来访问成员变量
    obj.foo();            // 错误!不能调用非const成员函数
    obj.value1;           // 可以访问const成员变量

    obj.value = 10;       // 可以对value进行写入操作

    return 0;
}

注意:

  • 只能调用其成员函数:const对象只能调用其成员函数中被声明为const的函数。这是因为const对象是只读的,而调用非const成员函数可能会修改对象的状态,违反了const的约束。

  • 访问其成员变量:const对象可以访问和读取其同样const成员数据,但不能修改它们。可以写入和读取非const的成员数据。

  • 不能调用非const成员函数:const对象不能调用其成员函数中未被声明为const的函数,因为这些函数可能会修改对象的状态。

  • 可以调用const成员函数:const对象可以调用其成员函数中被声明为const的函数,因为这些函数不会修改对象的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值