const 的基本用法

在 C++ 中,const 用于定义常量,表示变量的值不可修改。语法如下:

const int MAX_VALUE = 100;

  • MAX_VALUE 被定义为常量,后续修改会导致编译错误。
  • 必须初始化,否则编译报错。

const 与指针

const 可以修饰指针本身或指针指向的数据,形成三种组合:

  1. 指向常量的指针(底层 const):
    const int* ptr = &value; // 不能通过 ptr 修改 value
    

  2. 常量指针(顶层 const):
    int* const ptr = &value; // ptr 的指向不可变,但可修改 *ptr
    

  3. 指向常量的常量指针
    const int* const ptr = &value; // 指针和指向的值均不可变
    

const 与成员函数

在类中,const 可修饰成员函数,表示该函数不会修改对象状态:

class MyClass {
public:
    int getValue() const { return value_; } // 不会修改成员变量
private:
    int value_;
};

  • const 成员函数只能调用其他 const 成员函数或访问 mutable 成员。

constexpr(C++11 引入)

constexpr 表示编译期常量,比 const 更严格:

constexpr int ARRAY_SIZE = 10; // 必须在编译时确定值
int arr[ARRAY_SIZE]; // 合法

  • 适用于函数和对象,要求表达式可在编译期求值。

与宏定义的对比

  • const 有类型检查和作用域,宏(#define)仅是文本替换。
  • 推荐优先使用 constconstexpr 替代宏。

注意事项

  • 默认情况下,const 对象仅在当前文件可见。若需跨文件使用,需加 extern
    extern const int GLOBAL_CONST;
    

  • const 引用可绑定到临时对象,延长其生命周期。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐