类的朋友
来源:互联网 发布:北大发展研究院知乎 编辑:程序博客网 时间:2024/05/16 09:26
引例:
class Object{ public: Object(int v):value(v) { } private: int value;};void Print(Object *p)//编译错误{ printf("value:%d\n",p->value);}
显然,在全局函数Print中无法访问Object对象的私有成员
在类A中,用friend关键字可以将一个全局函数声明为该类的“朋友”。
也可以将另一个类声明为该类的“朋友”。
class Object{ //将全局函数Print声明为“朋友” friend void Print(Object *p) //将类Somethings声明为“朋友” friend class Something;};
原则上说,该函数、类只是这个类的“朋友”,而非“成员”。(有些教程上称之为友员,朋友成员)
(1)friend声明语句:位置自由,一般放在类体大括号的最前头。
(注意区分类的声明和类的定义,这里只是声明一下)
(2)朋友拥有的权利
可以无限地访问该类的所有成员
不受protected/private的限制
(注意:朋友关系是单向的,Something类可以自由访问Object类,但反过来不成立)
应用场景:
负面作用:friend是不常用的语句,它破坏了访问修饰符的作用,对类的封装构成威胁。
正面作用:可能的应用场景:在封装一个模块时,模块中有多个类,那么他们之间可以互相声明为朋友以便操作(他们是一伙的)
也就是说,模块内部的类都是朋友,而外部调用者不是朋友、受访问修饰符的限制。
不常用,尽量少使用
0 0
- 类的朋友
- toj-2469-朋友的朋友是朋友
- C++学习笔记---类的朋友
- 普通的朋友与真正的朋友
- 普通的朋友与真正的朋友
- 普通的朋友与真正的朋友
- 男人的朋友和女人的朋友
- 普通的朋友与真正的朋友
- 一个朋友的朋友的研究成果
- 朋友是什么,你有真正的朋友?
- 最好的朋友
- 朋友的笔记............
- 朋友的故事-1
- 朋友的故事.
- 朋友的照片
- 朋友的相处
- 一路顺风,我的朋友
- 永远的朋友!
- 检测窗口中打开的网页
- 一个ListView的使用
- [Android]Android SDK/NDK/Studio 官方下载地址
- Android Volley框架的使用(四)图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
- Mysql 主从架构之-主从配置
- 类的朋友
- Android5.0(Lollipop) 蓝牙BLE(Bluetooth Low Energy)
- 【LruCache和DiskLruCache结合】图片缓存机制
- HDU 5085 Counting problem
- 获取ie窗口的IHTMLDocument2对象
- Android App 线上热修复方案
- 夏令营记录
- Linux C: 基于C/S的多线程网络编程 (服务器充当一个客户端的两点传输)
- Android Binder机制原理