成员函数限定符(const除外)是什么意思?

时间:2017-01-05 21:29:36

标签: c++ c++11 reference rvalue-reference member-functions

众所周知,类方法可以使用const进行限定 - 如果是,则不允许更改它们所要求的实例(忽略mutable等)。可以认为它就像成员函数是独立的一样,但是将this指针作为其第一个参数 - const MyClass*方法的constMyClass否则就是ptr。

我最近意识到成员函数实际上还有其他可能的限定符(例如,请参见网站上的this question),因此限定符为:

  • const或非const
  • volatile或non-volatie
  • 未引用,常规引用(&)或rvalue-reference(&&

关于volatile,我知道这对变量意味着什么 - 你不能只是复制(例如在寄存器中或者在一些非连贯的缓存中)并期望它是有效的,就像其他代码一样可能正在改变原来的位置。这似乎并不像this修饰符那样非常干净地应用于“const指针隐喻”,因为 - 它是一个指针,当然其他人可以更改指向的数据。我会更好地理解像a __restrict__ qualifier on this这样的东西。那么,volatile是我所假设的,还是我误解了?

现在,关于成员的参考资格 - 我很无能为力。这甚至意味着什么?什么是什么参考?我不明白。

1 个答案:

答案 0 :(得分:0)

“volatile”关键字有效地告诉编译器限制它通常可以做的任何假设,以便优化生成的汇编程序指令来处理特定变量。

引用限定符用于使该方法仅在被调用的对象是左值引用(对于&)或rvalue引用(对于&&)时才被调用。如果您想根据对象的左值/右值来改变方法的行为,这会有所帮助(例如,假设rvalues通常是短暂的临时值)。