指针的const说明符

eug*_*ene 1 c++ pointers const

我可以声明,foo(const T& var)以便我知道var不会被改变.

指针的等效格式是foo(const T* var)

在过去,我想这些,相关的错误iterator/ const_iterator我恼火,我只是倾向于使用(T* var)不考虑常量性.

是否有一个很好的doc来声明函数,强制指针指向的内容不会改变'?

Jon*_*Jon 7

你所拥有的是一个指针,它禁止指针的内容发生变化.您可以使用"向后读取"规则来查看此内容:

const T* var     <===== left to right from this read
Run Code Online (Sandbox Code Playgroud)

向后阅读:

var是指向T常量的指针

这不同于

T* const var
Run Code Online (Sandbox Code Playgroud)

其中包括:

var 是一个指向a的常量指针 T

这里的区别在于常数是var,而不是T; 这意味着您可以T通过解除引用来更改var但不能更改var指向的内容.

当然,你可以同时拥有上述两个:

const T* const var
Run Code Online (Sandbox Code Playgroud)