C++ 将成员变量声明为private

20180313 C++ 将成员变量声明为private

封装的重要性毋庸置疑,如果你对客户隐藏成员变量(也就是封装它们),你可以确保class的约束条件总是会获得维护,因为只有成员函数可以影响它们。更进一步地说,你保留了日后变更实现的权利,如果你不隐藏它们,你很快会发现即使拥有class原始码,改变任何public事物的能力还是极端受到约束,因为那会破坏太多客户码。public意味不封装,而几乎可以说,不封装意味不可改变,特别是对被广泛使用的classes而言。被广泛使用的classes是最需要封装的一个族群,因为他们最能够从“改变采用一个较佳实现版本”中获益。protected成员变量的论点十分类似。实际上它和public成员变量的论点相同。


假设我们有一个public成员变量,而我们最终取消了它。多少代码可能会被破坏呢,是的所有使用它的客户码都会被破坏,而那时不可知的大量。因此public成员变量完全没有封装性,。假设我们有一个protected成员变量而我们最终取消了它,有多少代码被破坏,是的,所有使用它的derived classes都会被破坏,那往往也是个 不可知的大量。因此,protected成员变量就像public成员变量一样缺乏封装性,因为在这两种情况下,如果成员变量被改变,都会有不可预知的大量代码收到破坏,虽然这个结论有点违反直观,但经验丰富的程序库作者会告诉你,它是真的,一旦你将一个成员变量声明为public或protected而用户开始使用它,就很难改变那个成员变量所涉及的一切。太多代码需要重写、重新测试、重写编写文档、重新编译、。从封装的角度看,其实只有两种访问权限:private(提供封装)和其他(不提供封装)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值