首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于c++类的成员变量的疑问,该如何处理

2012-04-07 
关于c++类的成员变量的疑问看了《代码大全》这本书,在其他地方也常有人提到,在c++类的设计中,成员变量最好都

关于c++类的成员变量的疑问
看了《代码大全》这本书,在其他地方也常有人提到,在c++类的设计中,成员变量最好都设为private,这样是为了类的封装,如果外部需访问这些成员变量,比如说读取成员变量或者修改成员变量,需在类定义中添加属性为public的成员函数,通过这些函数访问私有的成员变量。
  但我有个疑问,如果我设计的类中私有成员变量很多,有几十个,而其经常要要在类外部用到,那岂不是要添加几十个读取和设置私有成员变量的函数啊。
  还请熟悉C++的朋友指点一下啊。

[解决办法]
那就看你的这个类能不能再细分成几个类了。
[解决办法]
那就不是 C++ 类了, 只是一个 C 的 struct.
[解决办法]
用内联函数。c++很多标准库中的解决方案就是用内联函数。这样你即解决了效率的问题,也解决了封装行的问题,应为编译器会在调用内联函数的地方把代码展开优化。比如一个查询大小的功能:
inline int size( void ){return _size;}
这样好多了。具体的内联函数的方面的介绍,主要咱也是菜鸟,没有仔细研究过,你不妨百度一下- -#能告诉我结果那就更好了!
[解决办法]
没有问题。如果必要,添加几十个读取和设置私有成员变量的函数是很正常的。
[解决办法]
设计得好的类很少要让外部访问它的成员变量,更绝不可能在很多地方都要访问。
[解决办法]
这么多成员是干嘛用的?如果只有读写 定义个结构体更紧凑 如果确实有好多处理逻辑业务需求的功能需要用这些成员,还是private比较好,派生类如果也用就protected
[解决办法]
如果读取和写入都是public且没有任何许可条件判断的话——那就是public变量
原则是原则,具体问题具体分析。java里还一切皆对象呢,也没看它取消基本数据类型

如果有些变量的读取和写入是需要条件判断的,那就用private封装起来,用get和set来控制
如果有些变量的读取和写入都不需要任何条件判断——直接public吧,绕那么多弯子有啥用?
[解决办法]

探讨

如果读取和写入都是public且没有任何许可条件判断的话——那就是public变量
原则是原则,具体问题具体分析。java里还一切皆对象呢,也没看它取消基本数据类型

如果有些变量的读取和写入是需要条件判断的,那就用private封装起来,用get和set来控制
如果有些变量的读取和写入都不需要任何条件判断——直接public吧,绕那么多弯子有啥用?

热点排行