【发布时间】:2013-02-08 19:16:30
【问题描述】:
这里有什么我不明白的。在下面的代码中,我定义了一个整数和一个常量整数。
我可以让一个常量指针 (int* const) 指向一个整数。见第四行代码。
同一个常量指针(int* const)不能指向一个常量整数。见第五行。
指向 const (const int* const) 的常量指针可以指向一个常量整数。这就是我所期望的。
但是,允许相同的 (const int* const) 指针指向一个非常数整数。见最后一行。为什么或如何可能?
int const constVar = 42;
int variable = 11;
int* const constPointer1 = &variable;
int* const constPointer2 = &constVar; // not allowed
const int* const constPointer3 = &constVar; // perfectly ok
const int* const constPointer4 = &variable; // also ok, but why?
【问题讨论】:
-
您似乎对 const 关键字的含义有误解。
const int*不是“我指向的 int 是 const”,而是“我不会用这个指针来改变我指向的 int”。您指向的 int 是否为 const 不会改变正在发生的事情。 -
感谢您的所有回答和 cmets。就像比尔在他的评论中写的那样,我弄错了。 C++ 有时很难获得。