const关键字在运算符定义中做了什么?

时间:2015-08-07 19:06:03

标签: c++ operators

我不明白const关键字在返回类型之前和此运算符定义的参数列表之后的用途。这取自书中的一个例子。

const char& operator [] (int num) const
{
    if (num < getlength())
        return Buffer[num];
}

2 个答案:

答案 0 :(得分:3)

C ++ const关键字基本上意味着“某些内容无法更改,或者无法委托更改为其他实体的操作”。这指的是一个特定的变量:一个任意的变量声明,或者隐含在一个成员函数中的this

函数名之前的const 是返回类型的一部分:

const char&

这是对const char的引用,这意味着无法为其分配新值:

foo[2] = 'q'; // error

函数定义末尾的const表示“此函数无法更改this对象,无法在任何对象上调用非const函数。”换句话说,调用此函数不能更改任何状态。

const char& operator [] (int num) const {
  this->modifySomething(); // error
  Buffer.modifySomething(); // error
  return Buffer[num];
}

const的目标 - 正确性是一个很大的主题,但短版本能够保证不可变状态实际上是不可变的。这有助于提高线程安全性并帮助编译器优化代码。

答案 1 :(得分:0)

这意味着您调用此方法的实际对象不会更改,如果您尝试更改它,则会出现编译器错误。