读书人

问一个关于封装的有关问题

发布时间: 2012-05-29 12:16:00 作者: rapoo

问一个关于封装的问题
这是问题是一个网友问我的,但我也答不上来。

先上代码:

C/C++ code
class 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
这篇将的很详细,俺就不另说了

读书人网 >C++

热点推荐