如何通过const类接口防止非常量指针修改

时间:2016-03-22 16:14:16

标签: c++ pointers const

示例代码:

local foo = require "foo"

以下客户端代码现在可能会更改我的对象的内部数据,即使我直观地预计它不会:

class Foo
{
  void m();
}

class Bar
{
  void m() const
  {
    fooPtr->m();   // allowed    
    // foo.m();    // disallowed at compile-time as I wish
  }

private:
  Foo* fooPtr;
  Foo foo;
}

可以通过引入这样的访问器方法来改进:

int main()
{
  const Bar bar;
  bar.m();
}

但是,直接从Bar中访问foo仍然有效且没有编译器错误,因此开发人员可能仍然会这样做并绕过对象的常量。另一个问题是,如果我必须在整个班级中改变foo的访问权限,我将产生大的差异。这个问题有更好的解决方案吗?

0 个答案:

没有答案