新手来了!
我正在阅读代码,我看到作者经常将成员函数编写为
const int func (const scalar& a) const
// etc
你看这里有三个 const,现在我理解了中间的一个,const scalar& a,它的目的是不改变对象 a,但是另外两个 const 呢?
我应该一直这样做,以保护 blahblah 不变,这是一个好习惯吗?
非常感谢!
新手来了!
我正在阅读代码,我看到作者经常将成员函数编写为
const int func (const scalar& a) const
// etc
你看这里有三个 const,现在我理解了中间的一个,const scalar& a,它的目的是不改变对象 a,但是另外两个 const 呢?
我应该一直这样做,以保护 blahblah 不变,这是一个好习惯吗?
非常感谢!
您发布的代码无效,无法编译。但是,如果您考虑
class MyClass {
const int& func (const scalar& a) const {
// ...
}
};
第一个const
将指定返回值是常量(即不可变)。第二个const
( const scalar& a
) 指定函数不修改参数值的值a
。第三个 const 指定它func
是一个常量成员函数,即它不修改MyClass
实例本身。
由于还没有人提到它:两者之间绝对没有区别
const int some_function();
和
int some_function();
on标const
量返回类型(例如int
)被忽略;它只对类类型很重要。有关的