我不明白const关键字在返回类型之前和此运算符定义的参数列表之后的用途。这取自书中的一个例子。
const char& operator [] (int num) const
{
if (num < getlength())
return Buffer[num];
}
答案 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)
这意味着您调用此方法的实际对象不会更改,如果您尝试更改它,则会出现编译器错误。