【C++】const

在 C++ 中,const 关键字用于定义常量值,这意味着一旦一个变量被声明为 const,它的值就不能被改变。const 的用途多样,它可以用来修饰变量、指针、类的成员函数等,以增强程序的安全性和可读性。

const 的几种用法:

1. 常量变量

const 修饰一个变量时,这个变量的值就不能被修改:

const int limit = 100;
limit = 200; // 错误:不能修改常量变量的值

2. 指针与 const

对于指针,const 可以用在不同的位置,其意义也会有所不同:

指向常量的指针:这意味着指针指向的数据不能通过该指针被修改(尽管原始数据可能不是常量,或者可能通过其他途径被修改)。

const int* ptr = &limit; // ptr 是一个指向常量整数的指针
*ptr = 200; // 错误:不能通过指向常量的指针修改数据

常量指针:指针本身是常量,不能指向其他地址,但指针指向的数据可以修改。

int value = 100;
int* const ptr = &value;
ptr = &limit; // 错误:ptr 不能指向另一个地址
*ptr = 200; // 正确:可以修改 ptr 指向的数据

指向常量的常量指针:既不能修改指针指向的数据,也不能修改指针指向的地址。

const int* const ptr = &limit;
ptr = &value; // 错误:不能修改指针地址
*ptr = 200; // 错误:不能通过指针修改数据

3. const 成员函数

在类中,const 可以修饰成员函数,表明该函数不会修改类的任何成员变量(除了那些被 mutable 修饰的变量)。这样的函数可以被称为“常量成员函数”,它可以被用于常量对象。

class MyClass {
public:
    int value = 0;

    int getValue() const {
        return value;
    }

    void setValue(int val) {
        value = val;
    }
};

const MyClass obj;
std::cout << obj.getValue(); // 正确:调用常量成员函数
obj.setValue(10); // 错误:不能在常量对象上调用非常量成员函数

4. const 和函数重载

const 还可以与函数重载结合使用,允许同一个函数在常量和非常量对象上有不同的行为:

class MyClass {
public:
    int data = 0;

    int& getData() {
        std::cout << "Non-const function\n";
        return data; // 返回引用,允许修改
    }

    const int& getData() const {
        std::cout << "Const function\n";
        return data; // 返回常量引用,防止修改
    }
};

MyClass a;
const MyClass b;
a.getData() = 15; // 调用非常量函数,可以修改数据
std::cout << b.getData(); // 调用常量函数,不能修改数据

通过这些示例,你可以看到 const 如何在不同场合下提供额外的保护和灵活性,防止程序中意外的数据修改,从而提升代码的安全性和健壞性。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值