C++友元
来源:互联网 发布:刺客列传网络剧全集 编辑:程序博客网 时间:2024/06/06 06:59
先从书上的一个例子开始,明白为什么C++需要引入友元的概念。
这里认为你熟悉Point类(就是一个记录点的性质的类),如果我要由两个点Point A
和Point B
计算他们之间的距离,那么程序该如何设计呢?初学类与对象者的第一想法,在Point类里头再写一个函数呗。
想想一下情况:假设我在Point类里实现了这个函数,那在此函数中必然要用到本类的实例化对象,因为要通过这个对象访问到它的数据成员来进行距离计算嘛。恩,想想也是可以的嘛。但是这样是有问题的,这个问题不在语法上(前面假设的没毛病),而在可读性上,毕竟距离是Point与Point之间的关系,所以它不应该属于“每一个单独的点,也不属于整个Point类”。
那直接写一个函数呢?语法上也是可以的,但问题是还是“不能体现这个函数与点之间的联系”。
写到这儿我觉得前面两种解决方式也未尝对此题不可,但是考虑到C++是一个面向对象的语言,一旦用于大型程序,这些“小聪明”可能就不中了。
那到底靠什么来联系这样一层关系?这就是友元机制了。
说明了友元机制的价值之后,具体用法参见维基百科:
在面向对象程序设计中,友元函数(friend function)是一个指定类(class)的“朋友”,该函数被允许访问该类中private、protected、public的数据成员。普通的函数并不能访问这些数据,然而宣告一个函数成为一个类的友元函数则被允许访问这些数据。
友元函数的宣告可以放在类声明的任何地方,不受访问限定关键字private、protected、public的限制。一个相似的概念是友谊类。
友谊关键字应该谨慎使用。如果一个拥有private或者protected成员的类,宣告过多的友元函数,可能会降低封装性的价值,也可能对整个设计框架产生影响。
还要强调的是,友元类“不继承,单向的,不传递”。
总之,有了友元机制之后将为C++编程带来相当大的方便。
参考《C++语言程序设计(第四版)》
- C++(一)友元
- [C++]友元学习
- [c++]友元函数
- [c++] 友元详解
- 【C++】友元函数
- c++:友元函数
- C++:友元函数
- C++:友元
- C/C++ 友元
- 【C++】友元函数
- C++:友元
- C++----友元
- 【C++】C++友元
- C++_友元函数
- C++_友元函数
- C++_友元函数
- C++_友元函数
- C++_友元函数
- Python Socket编程:发送MIME协议邮件
- frameset —— 定义一个框架集
- lombok最全的,最新的学习资料,demo【最全的注解】打开蓝色注解链接
- 使用 jquery.easing.js 增强动画过渡效果
- 警告: 无法调试脚本代码。未注册正确的 pdm.dll 版本。请修复 Visual Studio 2005 安装或运行“regsvr32.exe "%CommonProgramFiles%\Micro
- C++友元
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Android音乐浮窗播放器
- java-栈、堆内存简单分析
- DevExpress XtraScheduler日程管理控件应用实例
- Linux 网络性能tuning向导
- Filer过滤器和拦截器的不同
- 【数据结构】——平衡二叉树(插入)
- 第一次制作web页面文件