const int * const fun(const int * const& p)const的含义;

时间:2015-05-06 15:10:36

标签: c++ const pass-by-reference

const int* const fun(const int* const& p) const;

我正试图弄清楚这个给定函数原型的输入参数。我在这两者之间进行辩论,不确定哪一个是正确的。

  1. 输入是一个const引用,它引用一个const int指针。因此引用是常量,指针是常量,但它指向的值可以改变。
  2. 输入是const int指针的const引用,指向常量整数。

5 个答案:

答案 0 :(得分:3)

你所拥有的是对常量整数的常量指针的引用。

答案 1 :(得分:2)

p是对const int的const指针的引用。

引用本身不是const - “const引用”只是对const对象的引用。因此,“对const int的指针的const引用”将被理解为意思相同。

答案 2 :(得分:1)

  

输入是一个const引用,它引用一个const int指针。因此引用是常量,指针是常量,但它指向的值可以改变。

不正确。参数p无法更改为指向其他对象。 p指向的对象的值也不能更改。

  

输入是const int指针的const引用,指向一个常量整数。

排序。

p是对指针指向const整数的const指针的引用。

答案 3 :(得分:0)

输入是const指针的引用,指向const整数。

const int* const& p

第一个const表示int对象本身是常量且无法更改。第二个const表示无法更改该int上的指针。然后你看到它是一个参考。您可以为引用添加一个const,它将进行编译。像那样:

const int* const& const p

答案 4 :(得分:0)

  

const int* const& P

P是一个引用(不是常量引用,因为引用始终是常量)到一个指向常量整数的常量指针。

第一个常数是整数&第二个是指针(不是参考)。没有必要传递常量指针的引用,因为它仍然是常量。