对于面向对象程序设计中私有化成员变量的理解

学习c++时间不久,私有化成员变量一开始也让我很头疼,现在c++用多了我可以稍微解释一下。最重要的一个原因其实就是所谓的防御式编程,南科大有个c++网课,里面有一个很重要的概念就是实战编程中会有很大篇幅的代码用来确保数据是安全的(个人更喜欢理解为是准确的)。对一个成员变量而言,如果你只是简单的用一个set函数和get函数修改数据而没有任何限定措施,那和直接公开确实没有半毛钱区别,还不如直接public方便。但是你在实际编程中可以在编写set和get的同时加入限定条件,比如你要设计一个计时器,你的程序里有一个变量叫做时间,很明显时间不可能小于零,那么你可以在set中设置时间不能小于零(比如加上一个assert),否则抛出一个异常,这样对自己而言,一旦程序出错你可以快速判断出错原因(比如说你自己写的计时器软件即使时间出现了负数依然可能正常运行,但是这样结果肯定是错误的,所以当时间这个变量出现了负数后,时间这个成员变量的公开接口迅速抛出异常提醒你你该检查相关的代码了,是不是哪里出错了,或者哪里有逻辑漏洞)。对于你的队友而言,也给了他一定的限制,不能让他随便修改你的程序,比如说强制性给你的时间设置一个负数。

当然,如果这个代码是你自己用的,比如说用来科研,你自己设计一个什么新的算法,你自己很清楚你的代码是干什么的,你只是想验证一下自己的想法,并且你能可以保证代码的准确性,那私有化成员变量反而会严重拖累项目进度,并且会减慢程序运算时间,这个时候公开所有成员变量也是一个很好的选择(我本科的时候学有限元编程就是完全公开所有成员变量,照样能顺利完成任务,此时让我严格按照oop的规则来写代码天知道得写到什么时候。对了,因为我最近在学习美国环境保护署的开源管网模拟软件epanet,发现里面的所有成员变量也是完全public的,不过人家已经被实践检验过成千上万次了,数据出错那就是只能你自己的问题,所以完全public也没关系)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值