FX-C++ const

在C++中,const 是一个非常重要的关键字,用于定义常量或限制变量、函数、指针等的修改行为。它的主要作用是增强代码的安全性和可读性。以下是关于 const 的详细复习:


1. const 的基本用法

const 用于定义常量,表示一个值在初始化后不能被修改。

语法:
const 数据类型 变量名 = 初始值;
示例:
const int x = 10;  // x 是一个常量,值不能修改
x = 20;  // 错误:x 是常量,不能修改

2. const 修饰指针

const 可以用于修饰指针,具体有以下几种形式:

(1) 指向常量的指针(指针指向的值不能修改)
const int* ptr = &x;  // ptr 是一个指向常量的指针
*ptr = 20;  // 错误:不能通过 ptr 修改 x 的值
(2) 常量指针(指针本身的值不能修改)
int y = 30;
int* const ptr2 = &y;  // ptr2 是一个常量指针
ptr2 = &x;  // 错误:ptr2 的指向不能修改
*ptr2 = 40;  // 正确:可以通过 ptr2 修改 y 的值
(3) 指向常量的常量指针(指针和指向的值都不能修改)
const int* const ptr3 = &x;  // ptr3 是一个指向常量的常量指针
ptr3 = &y;  // 错误:ptr3 的指向不能修改
*ptr3 = 50;  // 错误:不能通过 ptr3 修改 x 的值

3. const 修饰引用

const 可以用于修饰引用,表示引用的值不能修改。

示例:
int a = 10;
const int& ref = a;  // ref 是一个常量引用
ref = 20;  // 错误:不能通过 ref 修改 a 的值
a = 20;    // 正确:可以直接修改 a 的值

4. const 修饰函数参数

const 可以用于修饰函数参数,表示参数在函数内部不能被修改。

示例:
void printValue(const int value) {
    // value = 30;  // 错误:value 是常量,不能修改
    std::cout << value << std::endl;
}

5. const 修饰成员函数

const 可以用于修饰类的成员函数,表示该函数不会修改类的成员变量。

示例:
class MyClass {
public:
    int getValue() const {  // const 成员函数
        // value = 20;  // 错误:不能修改成员变量
        return value;
    }
private:
    int value = 10;
};

6. const 修饰返回值

const 可以用于修饰函数的返回值,表示返回值是常量,不能修改。

示例:
const int getConstantValue() {
    return 100;
}

int main() {
    const int result = getConstantValue();
    // result = 200;  // 错误:result 是常量,不能修改
    return 0;
}

7. const 的优势

  • 安全性:防止意外修改常量值。

  • 可读性:明确标识出哪些值或函数不会修改状态。

  • 优化:编译器可以对 const 变量进行优化。


8. const 的注意事项

  • const 变量必须在定义时初始化。

  • const 可以用于任何数据类型(基本类型、类、指针、引用等)。

  • const 成员函数不能调用非 const 成员函数(除非使用 mutable 修饰的成员变量)。


9. 示例代码

#include <iostream>

class MyClass {
public:
    MyClass(int val) : value(val) {}

    int getValue() const {
        return value;
    }

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

private:
    int value;
};

void printValue(const int& val) {
    std::cout << "Value: " << val << std::endl;
}

总结

  • const 是 C++ 中用于定义常量的关键字,可以修饰变量、指针、引用、函数参数、成员函数等。

  • 合理使用 const 可以提高代码的安全性和可读性。

  • const 和 constexpr 的区别在于 const 的值可以在运行时确定,而 constexpr 的值必须在编译时确定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值