`
暴风雪
  • 浏览: 378458 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

《Effective C艹》读书笔记(15)

    博客分类:
  • C艹
 
阅读更多

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

    作为学生党,经常在代码里把变量声明为public,在外部直接进行访问了事。这个条款告诉我们,这样做是非常不科学的。

    1,private能够提供非常完善的权限控制,你可以直接控制一个变量是只读,还是可读可写,甚至是只写。而不是把使用这个类的各种权限全部公开。

    2,private对数据进行了封装,减少了数据被外界访问的机会,方便了代码的维护。

class base{
public:
    int data;
    char* name;
};

     试想有这样的一个类,其中的数据全部为public,那么外界可以直接对name和data这个数据进行各种读写操作。如果某一天需要对类进行修改,把name变为string类型,那么之前的那些代码将会几乎全部作废。

     如果在最初把name设为private,只提供公有的读写函数,就可以避免上面现象的产生,因为name出现变化,只需要修改相应的读写函数就可以了。

    

    protected并不比public更具备封装性

   如果不存在继承关系,那么protected和private相同。但如果存在继承关系时,protected标识的成员变量,在它的子类中仍可以直接访问,所以封装性就会受到冲击。这时候对父类进行修改,那么子类仍然要进行修改。这会造成麻烦

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics