我将使用下面的(简单)接口作为一个例子:const函数和在C++接口
struct IObject
{
virtual ~IObject() {}
virtual std::string GetName() const = 0;
virtual void ChangeState() = 0;
};
从逻辑上讲,GetName
应该是一个const
成员函数而ChangeState
不应该。
尽管我目前看到的所有代码都不遵循这个逻辑。即上述示例中的GetName
不会被标记为const
成员函数。
这是懒惰/粗心还是有正当理由呢?在逻辑上要求我的客户执行const
成员函数时,我的主要缺点是什么?
编辑:感谢您的答复大家。我认为这几乎是一致的:懒惰/无知是我所看到的原因。
无能/懒惰/不小心 – 2010-05-19 16:39:28
不要忘记无知 - 在我的经验糟糕的代码的主要原因。 – 2010-05-19 16:43:25
@尼尔:不幸的是我必须同意......我现在正在咆哮:p – 2010-05-19 16:58:45