条款22:将成员变量声明为private

protected成员变量的封装性并非高于public变量。

如果有个public的成员变量,一旦其需要改变,那么所有使用它的代码都需要改变。

如果有个protected的成员变量,一点其需要改变,那么所有的继承自他的derived class都需要重新改变。这与上面孰轻孰重其实不重要

所以说,往往只有两种封装性质,private或者是不封装

小结:

  切记将成员变量声明为private

  protected并不比public更具有封装性

时间: 2024-10-09 07:06:45

条款22:将成员变量声明为private的相关文章

Effective C++ 条款22 将成员变量声明为private

1. 设计类时,应该将成员变量声明为private,尽量避免用户对成员变量的直接访问,使用户只能通过函数接口访问成员,这样利于实现封装,特别是当类需要改变(添加或减少成员变量)时,只需要改变接口实现,对于用户来说只需要重新编译即可(否则类的用户需要修改大量对成员变量进行访问的代码) 2. protect并不比private更具封装性,特别是涉及到继承时,因此访问权限根据封装新只有两种:private和其他.

Effective C++:条款22:将成员变量声明为private

(一)为什么不采用public成员变量 (1)首先,从语法一致性考虑,客户唯一能访问对象的方法就是通过成员函数,客户不必考虑是否该记住使用小括号(). (2)其次,使用函数可以让我们对成员变量的处理有更精确的控制.如果我们令成员变量为public,那么每个人都可以读写它! 但如果我们以函数取得或设定其值,我们就可以实现出"不准访问"."只读访问"以及"读写访问",我们甚至可以实现"惟写访问". class AccessLeve

读书笔记_Effective_C++_条款二十二:将成员变量声明为private

1.格式统一 在调用的时候,不会去想有没有(),一律是有get(),或者set()之类的. 2.封装 能直接访问得越少,表明封装性越高, 封装性越高,我们的顾虑就少了, 例如:我们a.data*0.9的时候,不需要调用出来*0.9.只需用public的get()来调用在修改一下就好了 为什么不使用protected 在没有继承下的class下protected和private是一样的 但在发生了继承的情况下,原来只能用父类函数调用的数据,因为protected,完全暴露了出来. 而且,用了pri

C++11类内static成员变量声明与定义

众所周知,将一个类内的某个成员变量声明为static型,可以使得该类实例化得到的对象实现对象间数据共享. 在C++中,通常将一个类的声明写在头文件中,将这个类的具体定义(实现)写在cpp源文件中. 因此,就引出了static成员变量的声明与定义问题: 1. 如果一个类内成员变量是static的,且需要将之设定为常量(const),那么这个变量声明与初始化均可写在头文件内. 举个例子: 1 // Scanner.hpp 2 class Scanner { 3 public: 4 const sta

成员变量声明类型注意:

@public : 在任何地方都能直接访问对象的成员变量  @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private,即使声明为@public,若处在单独文件中也是@private)  @protected : 可以在当前类及其子类的对象方法中直接访问  (@interface中默认就是@protected)  @package : 只要处在同一个框架中,就能直接访问对象的成员变量  @interface和@implementation中不能

成员变量声明时初始化和构造方法中初始化的区别

声明时为成员变量赋值,那么你一创建对象,这个赋值就进行,而且先于构造器执行. 而且你每次创建这个类的对象,都是同一个值. 构造方法初始化可以单独为每一个对象赋不同的值 执行顺序:执行父类静态代码 执行子类静态代码初始化父类成员变量(我们常说的赋值语句)初始化父类构造函数初始化子类成员变量初始化子类构造函数

【objective-c】内存管理中成员变量声明参数的一些总结

1>set方法内存管理的相关参数 retain //release旧值,retain新值 (适用于OC对像类型) assign //直接赋值 (默认的参数,适用于非OC对象) copy //release旧值,copy新值 2>是否生成setter或者getter方法 readwrite //同时生成setter和getter方法 readonly //只生成getter方法 3>多线程管理 nonatomic //性能高 atomic //性能低

EC读书笔记系列之12:条款22、23、24

条款22 将成员变量声明为private 记住: ★切记将成员变量声明为private.这可赋予客户访问数据的一致性.可细微划分访问控制.允诺约束条件获得保证,并提供class作者以充分的实现弹性. ★protected并不比public更具封装性 条款23 宁以non-member-non-friend替换member函数 记住: ★宁可拿non-member-non-friend函数替换member函数.这样可增加封装性.包裹弹性和机能扩充性. -----------------------

《Effective C++》学习笔记——条款22

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 四.Designs and Declarations Rule 22:Declare date members private 规则 22:将成员变量声明为 private 1.为什么成员变量不该是 public ? > 从语法的一致性来看: 如果成员变量不是p