【发布时间】:2014-10-02 23:48:02
【问题描述】:
我有一个具有以下方法的类:
int getLength() {
return length;
}
(这个类叫做String,我定义它是为了练习)。
当我尝试编译时,我收到一条关于调用此方法的代码行的错误:
passing 'const String' as 'this' argument of int String::getLength() discards qualifiers.
在这个网站上的搜索让我意识到我需要在方法声明中添加const。它解决了问题。
我的问题:
我是否总是必须将任何不影响实例状态的方法声明为const?如果我不这样做,我会收到编译时错误吗?看起来很奇怪。
如果我不必总是这样做,那么当我必须将方法声明为 const 时会发生什么情况?
【问题讨论】:
-
如果您发布错误消息,最好同时发布错误消息所引用的源代码行(+context)。正如您自己所说的那样,错误不会发生因为您将方法声明为非常量,但因为您在非常量对象/引用上使用它。