新手来了!
我正在阅读一段代码,我看到作者经常将成员函数编写为
const int func (const scalar& a) const
// etc你看这里有三个常量,现在我理解了中间的一个,常量标量& a,它的目的是不改变对象a,但是另外两个常量呢?
我应该一直这样做,以保护废话不变,这是一个好习惯吗?
非常感谢!
发布于 2012-05-30 06:48:37
您发布的代码无效,它将无法编译。然而,如果你考虑到
class MyClass {
const int& func (const scalar& a) const {
// ...
}
};第一个const将指定返回值为常量(即不可变)。第二个const (const scalar& a)指定该函数不修改参数a的值。第三个常量指定func是一个常量成员函数,即它不修改MyClass实例本身。
发布于 2012-05-30 14:12:28
因为还没有人提到它:绝对没有区别
const int some_function();和
int some_function();标量返回类型(如int)上的const被忽略;它只与类类型有关。related
https://stackoverflow.com/questions/10807671
复制相似问题