理解const的位置

时间:2015-08-12 19:24:01

标签: c++ const

如果我有一个如下所示的成员函数:

const T& temp const( const T& t) const{
    //some code
    return t;
}

每个const做了什么,按顺序从左到右? 这是对还是错?

  1. return const object
  2. 无法更改任何不可变的成员字段
  3. 只能传递T
  4. 类型的const对象
  5. 这是一个const成员函数,只能用const对象调用

1 个答案:

答案 0 :(得分:8)

const T& temp const( const T& t) const{
^^1^^         ^^2^^  ^^3^^       ^^4^^

按从左到右的顺序:

  1. 此函数返回对const T的引用。所以回报不可修改。
  2. 语法无效。删除。
  3. 此函数将T的不可修改引用作为其参数。它可以是对现有对象的引用。它可以从一个临时值调用,它的生命周期延长到t的生命周期。你不能多说temp被称为什么 - 它可能是一个左值,它可能是一个右值(如果T是复制或移动可构造的)。
  4. 如果temp不是成员函数,则语法错误。否则,它是成员函数的const - 限定条件,表示可以在const对象上调用它,并且该函数可能不会修改mutable的{​​{1}}成员。 1}}或调用任何其他非this限定的成员函数。