eug*_*ene 1 c++ pointers const
我可以声明,foo(const T& var)以便我知道var不会被改变.
指针的等效格式是foo(const T* var)?
在过去,我想这些,相关的错误iterator/ const_iterator我恼火,我只是倾向于使用(T* var)不考虑常量性.
是否有一个很好的doc来声明函数,强制指针指向的内容不会改变'?
你所拥有的是一个指针,它禁止指针的内容发生变化.您可以使用"向后读取"规则来查看此内容:
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)