我有一个具有以下方法的类:
int getLength() {
return length;
}
(这个类叫做String
,我定义它是为了练习)。
当我尝试编译时,我收到有关调用此方法的一行代码的错误:
passing 'const String' as 'this' argument of int String::getLength() discards qualifiers.
在这个网站上的搜索让我意识到我需要在方法声明中添加 const
。它解决了问题。
我的问题:
我是否总是必须将任何不影响实例状态的方法声明为 const
?如果我不这样做,我会得到一个编译时错误?看起来很奇怪。
如果我不必总是这样做,那么在什么情况下我必须将方法声明为 const
?
最佳答案
编译器错误不是由方法引起的,而是由调用它的实例的类型引起的。您尝试在 const 对象 (const String
) 或对 const 对象 (const String&
) 的引用上调用非 const 方法。这被编译器正确地拒绝了。
而且,是的,您应该将逻辑上 const
的所有方法标记为 const
。
关于c++ - 我是否总是必须将任何不影响实例状态的方法声明为 const?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171356/