class SomeClass {
public:
void Render() const;
private:
mutable Cache m_some_cache;
};
这个类是const-correct的吗?什么时候可以安全地说“这个操作不会改变实例的内部状态”?
在上面的示例中,SomeClass是一个在屏幕上渲染东西的东西。它使用缓存(例如OpenGL缓冲区对象)来允许更快的处理进一步的调用。因此,唯一会在内部发生变化的是缓存对象。我在问自己,缓存是否已经属于渲染器的内部状态。
这个示例非常简单,但在我的实际应用程序中,这会涉及到许多类,即涉及许多Render()调用,其中大部分只进行缓存。但有些还通过资源加载器加载资源--在这里做出的假设仍然正确吗,即如果查询资源管理器以加载资源,则方法仍可能是const的?