这是c++语法中比较绕的一个概念,也是笔试面试中经常会考的知识点。 c++你为什么是c++啊?
下面的内容摘自 Thinking in C++ Chapter 8 Constants
Pointer to const
这有两种定义形式
const int* u;
Starting from the identifier, we read “u is a pointer, which points to a const int.”
int const* v;
the way it actually reads is “v is an ordinary pointer to an int that happens to be const.”
都表示了指向的int是不能改变的。
const pointer
int d = 1;
int* const w = &d;
Now it reads: “w is a pointer, which is const, that points to an int.”
Because the pointer itself is now the const, the compiler requires that it be given an initial value that will be unchanged for the life of that pointer. 因为w是常量,所以一定是要初始化的。
const pointer to const
这个其实前两种的合体。
int d = 1;
const int* const x = &d; // (1)
int const* const x2 = &d; // (2)
Now neither the pointer nor the object can be changed