const

内容简介

const 表示“只读”。它不会让变量神秘地变成常量池里的东西,核心作用是让编译器检查:这块数据不应该被当前代码修改。

用法

const 变量

const int max_count = 100;

const 指针相关

int value = 10;
int other = 20;
 
const int *p1 = &value;  // 不能通过 p1 修改 value
p1 = &other;             // 可以换指向
 
int *const p2 = &value;  // p2 不能换指向
*p2 = 30;                // 可以修改 value
 
const int *const p3 = &value;  // 指向和值都不能通过 p3 修改

C++ const 引用参数

void print_name(const std::string& name)
{
    std::cout << name << std::endl;
}

最佳代码实践

  • 不需要修改的数据都尽量加 const
  • 函数参数如果是大对象,C++ 中优先使用 const T&
  • 指针参数只读时写成 const T*
  • 常量命名要表达含义,例如 max_user_count,不要只写 n

错误用法

const int level = 10;
level = 5;  // 错误:不能修改 const 变量
const int value = 10;
int *p = (int*)&value;
*p = 20;  // 错误:不要强行修改 const 对象

注意事项

  • const 变量必须初始化。
  • C++ 中 constexpr 表示编译期常量表达式,语义比普通 const 更强,后续在 constexpr 学习。
  • const 和宏不同:const 有类型检查,宏只是预处理替换。

学习路径