c++面向对象编程中封装的重要性

编程入门 行业动态 更新时间:2024-10-06 12:19:32

c++<a href=https://www.elefans.com/category/jswz/34/1769334.html style=面向对象编程中封装的重要性"/>

c++面向对象编程中封装的重要性

C++中有个不成文的规定(其实在c++effective中已经成文),就是要将成员变量声明为private,这样做的好处有三点:
1.提高语法的一致性,客户在访问class成员的时候不需要思考是否要带括号,统一带括号访问,节省思考时间。
2.提升class对成员变量的访问控制精度,如果你的成员变量声明为public,这样所有的用户都能访问到它,但如果你声明为private,你就可以通过实现成员函数,来实现对这些成员变量的读写控制,如只读,或可读可写。
3.提升class的封装性,这一点是最重要的,也是本文重点讨论的内容。

封装性对于一个class的设计有多重要,假设我们有一个public变量成员,而我们最终取消了它,多少代码可能会被破坏呢?所有使用它的客户码都会被破坏,那将是一个不可知的大量。因此public成员函数完全没有封装性。同理,对于protected成员变量,封装性也几乎等于0,这些成员变量面临着大量被改变的机会,而一旦被改变,就意味着太多代码需要重新编写、重新测试、重新编写文档、重新编译,这对程序员是非人道的沉重负担,因此,我们在实现自己的class的时候,一定要将成员变量声明为private。而且不仅如此,在设计成员函数的时候,直接接触这些变量的函数数量越少越好,如果其他成员函数需要访问这些成员变量,最好通过调用定义好的成员函数来间接访问,比如:

class person{
private:int age;
public:int getAge(){return adge;}bool isAdult(){return getAge()>=18;}
}

这就是个生动的例子,在判断是否成年的时候,不是直接调用age,而是调用直接访问age的函数getAge,尽量减少直接访问private成员变量的函数,就最大限度的降低了因为客户误修改成员变量的机会,以避免不必要的错误。
by the way,STL源码中都是采用的这种模式进行书写的,我一开始还以为是为了极端的代码复用,现在才知道,都是为了提高封装性!

更多推荐

c++面向对象编程中封装的重要性

本文发布于:2024-02-28 03:59:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1767816.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:面向对象   重要性

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!