[Effective C++]条款22:将成员变量声明为private

145 阅读1分钟

【技巧】

切记将成员变量声明为private。这可赋予客户访问数据的一致性、可细微划分访问控制、允诺约束条件获得保证,并提供class作者以充分的实现弹性

先来看看 public成员变量,为什么不采用它呢?

  • 如果成员变量不是 public,客户唯一能够访问对象的办法就是通过成员函数。
  • 可以通过gettersetter成员函数来精确的控制变量的权限,例如读写, 只读, 不可访问

protected并不比public更具有封装性,只有private提供封装.

  • 假设我们有一个 public 成员变量,而我们最终取消了它,所有使用它的客户码都会被破坏,而那是一个不可知的大量。
  • 假设我们有一个 protected 成员变量,而我们最终取消了它,所有使用它的derived classes 都会被破坏,那往往也是一个不可知的大量。

Reference:

blog.csdn.net/weixin_4803…