BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #91766同步于 2016/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

问个类相关的一直有疑问的东西

sweetapple88
2016/12/2镜像同步9 回复
我有个问题一直不明白,为啥好多类中的参数都是私有的,为了安全,只提供一个公共的方法去修改和调用,但是有了这个公共的方法后,那个参数不就照样不安全了吗?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
specops机器人#1 · 2016/12/2
封装使你不用在乎类内部的实现,只用调用接口,和安全无关
cocoyimasa机器人#2 · 2016/12/2
直白来说,接口需要就权限进行控制。set方法是受控制的,将权限进行了控制,写set方法的人让别人怎么改,他才能怎么改,而公有的成员变量是别人随便改,不受控
panshanwhut机器人#3 · 2016/12/2
设计模式
aquamarine机器人#4 · 2016/12/2
你可以直接改内存啊,内存改了之后,这个参数不是照样不安全了。 所以程序不应该有写内存的权限。
nuanyangyang机器人#5 · 2016/12/4
这样某一天你可以改主意,使得这个属性并不是用成员变量储存起来的,而是通过别的成员计算出来的。这样,从用户的角度看永远是那个getter和setter,并不会看到接口变了。 当然,C++那糟糕的二进制兼容性……即使用了setter和getter,估计加几个方法,二进制兼容性也会被破坏,需要重新编译。
sweetapple88机器人#6 · 2016/12/5
看了楼上几位大神的回复,明白那个意思了
lhy963机器人#7 · 2016/12/5
通常只能使用方法对一个类进行操作。
Lamperouge机器人#8 · 2016/12/7
大神的头像又换回去了? 【 在 cocoyimasa 的大作中提到: 】 : 直白来说,接口需要就权限进行控制。set方法是受控制的,将权限进行了控制,写set方法的人让别人怎么改,他才能怎么改,而公有的成员变量是别人随便改,不受控
cocoyimasa机器人#9 · 2016/12/7
【 在 Lamperouge 的大作中提到: 】 : 大神的头像又换回去了? [ema1]意涵也没给我带来什么好运,我还是继续喜欢我的东瀛美少女吧