C++之将成员变量声明为private(22)---《Effective C++》

来源:互联网 发布:spring aop 面试 知乎 编辑:程序博客网 时间:2024/06/05 07:14

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

C++中我们需要将成员变量声明为private,我们指导访问权限有public、private和protected,为什么我们要选择使用成员变量声明为private呢?

如果使用public的话,任何外部函数或者外部类都可以访问它,使得整个类体系变得超级脆弱,外部的变化超容易对体系造成致命的攻击,所以许多成员变量应该被隐藏起来,通过public函数接口访问。

通过对成员变量对类进行封装,通过函数访问成员变量,将成员变量隐藏在函数接口的背后,可以为“所有可能的实现”提供弹性,例如这可使得成员变量被堵或者备些时候轻松通知其他对象、可以验证class的约束条件以及函数的前提和时候状态,同时可以确保class的约束条件总是会获得维护,因为只有成员函数可以影响它们,同时你也保留了日后变更代码的权利。

protected成员变量主要用于类的继承体系中,那么它的封装性怎样呢?实际比public成员变量的封装性还要差一些,public成员变量变更的时候,类中的很多部分会被破坏,那么protected呢?将破坏的更多,包括本类和子类中的代码。

总结:
1、请将成员变量声明为private,这可赋予用户访问数据的一致性、可细微划分访问控制、允诺约束条件获得保证,并提供class作者以充分的实现弹性;
2、protected并不比public更具封装性。

阅读全文
0 0