"Const"在C++中做了什么其他的事情,然后告诉编译器特定的东西是只读的

GEN*_*NER 3 c++ pointers const

好吧,我没有意识到这const可能像指针一样令人困惑.有人可以在步骤中解释下面的代码到底做了什么const

const int*const Method3(const int*const&)const;
Run Code Online (Sandbox Code Playgroud)

即使对于非新手程序员来说也是如此令人困惑.

use*_*177 5

它可能令人困惑,因为它混合了两种风格const.

const int*const Method3(const int*const&)const;
Run Code Online (Sandbox Code Playgroud)

我会对它们进行重新排序,因为在我看来,理解这些的最好方法是向后阅读它们.

让我们从返回类型开始:

const int*const -> int const* const
Run Code Online (Sandbox Code Playgroud)

通过向后阅读它我们得到:const指向const int.

同样,对于函数参数:

const int* const& -> int const* const&
Run Code Online (Sandbox Code Playgroud)

通过向后阅读它我们得到:引用const指针const int.

该函数也标记为const,这意味着它是一个成员函数,例如,当对该类的引用是常量时可以调用它.

有关可能的const优化和进一步理解,请参阅以下答案:

  • @ GENIVI-LEARNER对指针的引用确实是一件事.阅读参考资料,它们主要是用于指针的语法糖.你可以声明`int**x`,它是指向`int`的指针,或者你可以声明`int*&x`,它是对`int`的指针的引用.适用于`int*`vs`int&`的相同规则适用于此,唯一的区别是该值现在是`int*`而不是`int`.考虑一个别名,使其更清晰:`使用pint = int*`,这两个例子变成了`pint*x`和`pint&x`. (2认同)
  • @ GENIVI-LEARNER对指针的引用允许函数修改指针本身(而不是按值获取指针,其中将传递的指针重新分配给另一个目标不会修改原始指针).当然,把它作为对`const`指针的引用使得这个没有实际意义,因为`const`指针不能重新定位. (2认同)