C ++中const int const&和const int&有什么区别?

时间:2019-02-27 16:37:28

标签: c++ pointers reference

在c ++中,我可以写const int const*来指向常量int的常量指针。 我也可以写const int&作为const引用。 const int const&是对const int的引用吗?

谢谢!

3 个答案:

答案 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