C++ const关键字常见用法
更新时间:2026年06月23日 10:12:35 作者:Tim_10
这段文章详细介绍了C++中const的关键概念及其常见用法,包括const修饰基本常量、指针、引用和成员函数,以及与constexpr的区别,强调const作为只读契约的重要性,感兴趣的朋友跟随小编一起看看吧
一、概念
- const关键字在C++中不只是表示常量,他的核心是只读契约
二、const五大常见用法
1、基本常量
- 用于替代#define
- 特点:编译器常量,有类型检查,比宏安全
const int SIZE = 20;
2、const与指针
- 根据const与指针符号*的前后位置,记忆口诀: 左定值,右定向
1)、指向常量的指针
- const在*左边,定值
- 特点:值不能改,但指针可以改(是顶层const)
const int* p = &a; *p = 10; // 错❌️ p = &b; // 对✅️
2)、常量指针
- const在*右边,定向
- 特点:指向不能改,但值可以改(是顶层const)
int* const p = &a; *p = 10; // 对✅️ p = &b; // 错❌️
3)、指针常量指针
- 既不能修改值,也不能修改指向
const int* const p = &a;
3、const引用传参
- 函数的参数使用const进行修饰
- 优点:
- 避免拷贝,传递引用
- 防止参数被修改,const保护作用
- 可接受临时变量 printData("hello");
void printData(const std::string& str) { }4、const成员函数
- 在成员函数声明末尾加const,表示该函数不会修改任何非静止成员(变量mutable成员除外)
- 特点:const对象只能调用const成员函数
class Student {
private:
mutable int cache_hits; // 即使const函数也可以改
int age;
public:
// const成员函数内,this被隐式视为 const Student* const this
int getAge() const {
// age = 10; // ❌ 编译报错
cache_hits++; // ✅ 允许,因为mutable
return age;
}
};5、const修饰函数返回值
- 返回引用防止返回值修改
const Student& getStudent() { return stu; } // 返回引用防修改
const int getValue() { return 1; } // 防止 (a = getValue()) = 3 这样的左值赋值操作三、指针常量、常量指针与 指针int* 的相互赋值
- 底层const (const int *),规定指向的值不能改变,赋值给int*后,约束破坏了,他可以修改对象的值
- 顶层const (int* const), 指向的指针不能改变,但是对象值可以改变,不受影响
四、constexpr与const的区别
- const是运行时常量,只读契约
- constexpr是编译器常量。
到此这篇关于C++ const关键字常见用法的文章就介绍到这了,更多相关c++ const使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例)
本篇文章介绍了VS2010/MFC编程:常用控件:树形控件Tree Control,包括树形控件的创建、CTreeCtrl类的主要成员函数和应用实例有兴趣的可以了解一下。2016-12-12


最新评论