const func(const scalar& a)const中的三个“const”,为什么?

时间:2012-05-29 22:33:56

标签: c++

新手在这里!

我正在阅读代码,我看到作者经常将成员函数编写为

const int func (const scalar& a) const
// etc

你看到这里有三个const,现在我理解了中间的一个const,const scalar& a,目的是不改变对象a,但另外两个const呢?

这是一个好习惯,我应该一直这样做,以保持blahblah不变?

非常感谢!

2 个答案:

答案 0 :(得分:7)

您发布的代码无效,无法编译。但是,如果你考虑

class MyClass {
  const int& func (const scalar& a) const {
    // ...
  }
};

第一个const将指定返回值是常量(即不可变)。第二个constconst scalar& a)指定函数不修改参数a的值的值。第三个const指定func是一个常量成员函数,即它不会修改MyClass实例本身。

答案 1 :(得分:0)

由于没有人提及它:

之间完全没有区别
const int some_function();

int some_function();

标量返回类型const被忽略;例如int);它只对班级类型有用。 related