我将使用以下(普通)接口作为示例:
struct IObject
{
virtual ~IObject() {}
virtual std::string GetName() const = 0;
virtual void ChangeState() = 0;
};
Run Code Online (Sandbox Code Playgroud)
逻辑规定GetName应该是const成员函数,而不ChangeState应该.
到目前为止,我见过的所有代码都没有遵循这个逻辑.也就是说,GetName在上面的例子中不会被标记为const成员函数.
这种懒惰/粗心大意还是有正当理由的?const在逻辑上要求我强制客户实现成员函数的主要缺点是什么?
编辑:感谢您的回复.我认为这几乎是一致的:懒惰/无知是我所看到的原因.