【C++】const关键字的作用及常见应用场景
一、核心作用
用于定义“常量”,限制程序对变量的修改,提升代码安全性和可读性。其核心作用包括:
- 避免误修改:明确标识不可变数据。
- 编译器优化:常量可被放入符号表,减少内存访问,优化执行效率。
- 类型检查:强制类型匹配(优于宏)。
二、应用场景及详解
1. 修饰变量
基本类型:值不可变
const int MAX_SIZE = 100; // 必须初始化,后续修改触发编译错误
2.指针与引用:
- 常量指针(指向不可变)
const int* ptr
int const* ptr //或
- 指针常量(指针不可变)
int* const ptr
- 双重常量(指针和值均不可变)
const int* const ptr
3. 修饰函数参数
- 输入参数保护:防止函数内意外修改。
void print(const string& s) {
// s[0] = 'a'; // 错误!s为常量引用
}
4. 修饰函数返回值
- 返回常量值:禁止对返回值赋值
const int getValue() { return 42; } // getValue() = 10; // 编译错误
5. 类中的const
- 常量成员函数
声明:void func() const;
作用:承诺不修改对象状态
- 常量对象:只能调用常量成员函数。
const MyClass obj;
obj.getX(); // 合法
// obj.modifyX(); // 非法
三.
1. C与C++中const的区别?
C中const默认为外部链接,可通过指针间接修改(未定义行为);
C++中const默认为内部链接,且严格禁止修改(符号表优化)
2. const与#define的优劣?
const:类型安全、作用域控制、支持调试;
#define:无类型、易出错(可3能导致表达式错误)。
3. 常量成员函数能否调用非常量函数?
不能!违反“不修改对象”的原则,需保证调用链均为安全。