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

Dan*_*iel 3 c++

新手在这里!

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

const int func (const scalar& a) const
// etc
Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢!

Kru*_*lur 7

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

class MyClass {
  const int& func (const scalar& a) const {
    // ...
  }
};
Run Code Online (Sandbox Code Playgroud)

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

  • 这里更有趣!`constexpr const char*const&func(const char*const&a)const` (3认同)