const一般在C++的以下三种情况中使用。
一、定义常量const在英语中就有常量的意思,其最基本的作用就是定义常量。定义的常量值无法被修改。
例如以下代码会报错。
#includeint main() { const int a = 5; a = 2; return 0; }
然而事实上是,C++中的const定义常量只能算是一个“承诺”,这个地方的值是可以通过其他方法修改的。比如下面的例子。
#include二、指针相关int main() { const int a = 19; int *b = (int*)&a; *b = 9; std::cout << *b << std::endl; return 0; }
-
const可以设置不能修改指针指向位置的值。
例如以下代码第六行是可以通过编译的,第七行就会报错。
#include
int main() { const int* a = new int; a = new int; *a = 2; return 0; } 有些时候也有另一种表达方式,效果是一样的。
int const*
-
定义“指针常量”,定义完成后,该指针的值无法被修改。
以下代码在第七行会报错,此时const关键字的位置是在变量类型int之后。
#include
int main() { int* const a = new int; *a = 2; a = new int; return 0; }
类的方法后面加上const关键字代表此方法不能修改成员变量的值。
比如以下代码,在第九行就会报错,因为此方法被定义为不能修改x的值。
#includeclass A { public: int x; void changeX() const { x += 1; } }; int main() { A* a = new A; a->changeX(); return 0; }
但是关键字mutabel 可以给成员变量’“特权”,让其可以被修改。
#includeclass A { public: mutable int x, y; void changeX() const { x += 1; } }; int main() { A* a = new A; a->changeX(); return 0; }



