C++中设置成员变量为private

在C++类设计中,C++成员变量都应该设置为private,其理由如下:

1)保持语法一致性

如果所有的成员变量都是private,那么用户访问成员变量时都必须通过调用函数,保证了调用的一致性。如类对象a,它有一个成员函数GetName(), 它调用函数获取成员变量name的形式:a->GetName(),而如果直接将name声明为public,那么它的调用形式为:a->name。也即类对象调用成员函数和成员变量的形式是不一样的,造成了语法上的不一致性。

2)可以对成员变量的处理有更精确的控制

如果将成员变量设置为public,那么用户可以对其进行随意的读写操作,而如果用成员函数来控制,那么可以实现其是否可访问,是否可读,是否可写等属性。如:

 1 class AccessLevels
 2 {
 3     public:
 4         int getReadOnly() const { return readOnly; }
 5         void setReadWrite(int value) { readWrite = value;}
 6         int getReadWrite() const { return readWrite; }
 7         void setWriteOnly(int value) { writeOnly = value; }
 8     private:
 9         int noAccess; //can't access
10         int readOnly; // only can read
11         int readWrite; // can read and write
12         int writeOnly; // only can write
13 };
View Code

 3)满足封装性

public成员变量不具备封装性,用户可以读写它们,这样一来就有可能发生这种情况:如果在后期的维护中某一个public成员变量被取消了,那么这就必须在所有使用过这种成员变量的代码中进行修改,因而可能会造成大量的代码破坏量。如果将成员变量控制在函数中,那么实现的可能性就会有很多种,即弹性很大,可以在读取或修改时通知其他对象,可以验证class的约束条件,可是实现多线程中的同步控制等等。

此外,protected与public成员变量类似的无法满足上面的三个条件,因此在类的声明和定义中,最好将成员变量声明为private属性。

 

以上整理子Effective C++中文版第三版 case22.

转载于:https://www.cnblogs.com/sophia-yun/archive/2013/05/21/3089787.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值