问一个关于封装的有关问题
问一个关于封装的问题这是问题是一个网友问我的,但我也答不上来。先上代码:C/C++ codeclass Temp{private:.
问一个关于封装的问题
这是问题是一个网友问我的,但我也答不上来。
先上代码:
C/C++ codeclass Temp{private: ............... int value; ...............public: ............... void SetValue(int v) { value = v; } int GetValue() { return value; } ...............};
上面的代码中,私有成员value既能set,又能get,那还不如将它直接公有成员算啦。
那么,将value设为私有成员,同时又提供可读可写的接口,这样做有什么好处呢?
[解决办法]如果只是单纯的get,set就没什么区别,但是如果想对value作些控制,比如value不能是负数,这样在set时就可以判断,但是如果value公有了就没法控制了
[解决办法]明确的告诉别人:修改我这个值就需要调用我的接口。
不允许你私自乱改我的变量。其实你这样短小的函数,已经被编译器给你设置为内联函数了,不会在效率上有多大的影响的。
[解决办法]这个, c# 里面,都这么搞吧。
比如,你未来,要对 set, get ,加参数验证等
[解决办法]最大的好处就是面向接口编程
以后想怎么改都可以,客户端代码不用变
[解决办法]因为接口是接口,数据是数据,封装的比较干净。
[解决办法]首先,这是一种风格;
另外,这种风格有现实的意义,将具体的实现逻辑,和接口分离了,所不定哪天实现就变了。
再者,代码的变动也可局限在实现逻辑上,而不是蔓延到一大片。
[解决办法]具体参考Effctive C++
找了篇翻译出的博客,楼主看下
http://blog.csdn.net/fatalerror99/article/details/443775
这篇将的很详细,俺就不另说了