Const in C++
const更像一个假的关键词,因为它实际上在生成代码的时候并没有做什么。这是一种针对开发人员写代码的强制规则
const的作用:相当于你做出承诺某些东西是不变的,不会改动的(但这只是一个承诺)
用法
最简单的用法:
const int MaxAge = 90;
对于指针:
-
💡对指针
const int*,表示不能修改指针指向的内存地址的内容了,但是可以修改指针的指向const int* a = new int; //表示不能修改指针指向的内存地址的内容了 int b = 1; *a = 1; //错误操作 a = &b; //正确操作 //const只是让指针不能修改指向的内存地址的内容,但是指针指向的内存地址还是可以改变!!! -
💡而对指针
int* const,则功能与上面完全相反,表示不能修改指针的指向,但是可以修改指向的内存地址的内容- 关键在于
*在前面还是在后面 - 星号
*在前面,则是要让指针变成常量,使它不能被重新分配,但可以修改它指向的内容(const指针) - 星号
*在后面,则是让它可以被重新分配,但是不能修改指向的内容
- 关键在于
-
顺便一说
const int* const这种两个const的,代表指针既不能改指向,也不能改指向的内容
💡由C++Primer知,当前缀五花八门时,从右向左阅读有助于理解真实含义
- 如
const int* a是指向整型的常量指针,不能修改指向内容 - 如
int *const a是常量指针指向一个 int 对象 - 如
const double *const pip = &pi是一个常量指针,它指向的对象是一个双精度浮点型常量
对于类:
-
放在方法名的后面(只有类里才能这么用)
- 这种做法意味着:这个方法不会修改任何实际的类(故下面是不能修改类的成员变量的),意味着这只是一个只读的方法,只能从类中读取数据,不能修改数据
class Entity { private: int m_X, m_Y; public: int GetX() const { m_X = 2; //❌这个是错误做法!!! return m_X; } } -
定义一个常量的对象:
const Entity e- 这个常量的对象只能使用常量的方法,比如它只能使用上面的
Getx()
- 这个常量的对象只能使用常量的方法,比如它只能使用上面的
本文详细介绍了C++中的const关键字的用法,包括如何声明常量、const指针的两种形式以及const在类方法中的应用。强调const用于承诺不修改变量,帮助提高代码的清晰性和安全性。同时,讲解了const对象只能调用const方法的概念,以及const关键字在指针和类方法签名中的位置决定其具体作用。

7605

被折叠的 条评论
为什么被折叠?



