3

新手来了!

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

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

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

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

非常感谢!

4

2 回答 2

7

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

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

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

于 2012-05-29T22:48:36.853 回答
0

由于还没有人提到它:两者之间绝对没有区别

const int some_function();

int some_function();

on标const量返回类型(例如int)被忽略;它只对类类型很重要。有关的

于 2012-05-30T06:12:28.427 回答