在c ++中,我可以写const int const*
来指向常量int的常量指针。
我也可以写const int&
作为const引用。 const int const&
是对const int的引用吗?
谢谢!
答案 0 :(得分:8)
const int const*
不是指向常量int
的常量指针。为了得到你需要的东西
const int * const.
在您的情况下,您将const
都应用到int
上,因此您有一个指向常量int
的可变指针。
const int const&
也发生了同样的事情。要对常量int
进行常量引用,您将需要
const int & const
但这是非法的。
请注意,在const int const*
和const int const&
中,都这样两次申请const
实际上是不合法的。
答案 1 :(得分:5)
那么const int const&是对const int的引用吗?
不,那是compilation error。
尝试编译如下内容:
int z = 0;
const int const& a= z;
然后您会看到编译器会对您大吼大叫。
您不能为同一类型复制const
。您以const int const*
是指向常量int
的常量指针为前提也是错误的。
答案 2 :(得分:1)
如果您被困在理解这样的声明中,那么按照Clockwise/Spiral规则的建议向后阅读,总是一个好主意。
int const * // pointer to const int
int * const // const pointer to int
int const * const // const pointer to const int
int * const * p3; // pointer to const pointer to int
const int * const * p4; // pointer to const pointer to const int