众所周知,类方法可以使用const
进行限定 - 如果是,则不允许更改它们所要求的实例(忽略mutable
等)。可以认为它就像成员函数是独立的一样,但是将this
指针作为其第一个参数 - const MyClass*
方法的const
和MyClass
否则就是ptr。
我最近意识到成员函数实际上还有其他可能的限定符(例如,请参见网站上的this question),因此限定符为:
const
或非const volatile
或non-volatie &
)或rvalue-reference(&&
)关于volatile
,我知道这对变量意味着什么 - 你不能只是复制(例如在寄存器中或者在一些非连贯的缓存中)并期望它是有效的,就像其他代码一样可能正在改变原来的位置。这似乎并不像this
修饰符那样非常干净地应用于“const
指针隐喻”,因为 - 它是一个指针,当然其他人可以更改指向的数据。我会更好地理解像a __restrict__
qualifier on this
这样的东西。那么,volatile
是我所假设的,还是我误解了?
现在,关于成员的参考资格 - 我很无能为力。这甚至意味着什么?什么是什么参考?我不明白。
答案 0 :(得分:0)
“volatile”关键字有效地告诉编译器限制它通常可以做的任何假设,以便优化生成的汇编程序指令来处理特定变量。
引用限定符用于使该方法仅在被调用的对象是左值引用(对于&)或rvalue引用(对于&&)时才被调用。如果您想根据对象的左值/右值来改变方法的行为,这会有所帮助(例如,假设rvalues通常是短暂的临时值)。