c ++中的封装,数据隐藏,setter / getters

时间:2010-02-17 09:58:22

标签: c++ encapsulation

  

可能重复:
  Why use getters and setters?

在用c ++编写类时,通常将方法公之于众,将属性设置为私有/公共,这样就无法从外部访问这些属性。

但是当我们使用getter / setter时,可以从外部轻松访问这些属性。那么,为什么要把它们作为私人/受保护的第一手资料;如果我们稍后要使用setter / getters进行修改。

我对这个问题很困惑。好的解释会有所帮助。

感谢。

4 个答案:

答案 0 :(得分:2)

你永远不应该提供吸气剂和默认情况下,只有在类的用例需要它们时才设置setter。这对于制定者来说几乎不会是真的,只有偶尔会出现在吸气者身上。

考虑std::string类。提供对其私有数据成员的访问权限是否有意义?不,只有其中一个通过size() getter暴露(当前长度),没有通过setter暴露。

答案 1 :(得分:1)

  1. 您可以在将来为setter / getters添加一些逻辑。
  2. 有时候getter / setter可以使用抽象的东西来操作......比如动态数组中的计数

答案 2 :(得分:0)

正如Adelf所说,添加逻辑。 也是仅写入或仅读取值的选项。

答案 3 :(得分:0)

您可以限制对属性的访问,即如果您将在没有setter的情况下编写getter,则属性将是只读的。还可以添加一些有用的逻辑,即用于设置器 - 验证边界价值条款。 您还可以添加属性的getter,其值在调用时计算