今天,复习C++基础知识友元这一节的内容,考证C++为什么定义了这一看似矛盾的机制:C++提倡以类为单位编程,注重对类的封装与信息隐蔽,但友元的出现破坏了这一原则,相当于在一堵墙上开了一个小洞.C++为什么要左右手互搏呢?
其实,看似矛盾的这一点体现C++的博大精深,分析如下:
作为一种编程技术手段,友元为程序员提供了一种面向对象程序和面向过程程序相互衔接的接口。从根本上说面向对象的分析与设计方法并不能彻底解决现实世界中的一切需求。许多按照对象化设计的软件系统常常保留一些供早期程序访问的接口,来扩大自身功能,提高自己产品的竞争能力。友元较为实际的应用是运算符重载,从而提高软件系统的灵活性。
C++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。友元的正确使用能提高程序的运行效率,但破坏了类的封装性和数据的隐蔽性,导致程序可维护性变差,因此一定要谨慎使用。
C++是面向对象编程的语言,但复杂现实问题的解决,面向对象有时候不是一个很好的方案,或许面向过程更为合适高效,C++没有因为是面向对象的语言,把其它语言机制排除在外,而是相互兼容.C++本身支持面向过程与面向对象两种方式的.
由这一点看来,C++出现的各种语言机制,都是有原因的,都是为了更好地解决问题,让程序员编出代码简练,运行高效的程序,那些说C++不容易掌握的人,对C++的误解已经很深了.这一体现了C++是一种难学易用的编程语言.
本文出自 “LinuxQt济南高新区” 博客,请务必保留此出处http://qtlinux.blog.51cto.com/3052744/1560896
原文地址:http://qtlinux.blog.51cto.com/3052744/1560896