C++友元函数和友元类
来源:互联网 发布:mac yosemite 下载 编辑:程序博客网 时间:2024/05/29 19:05
最近这些天在重温设计模式GOF23,偶然想到友元,不使用都快忘了
今天重温一下C++友元知识,学了之后几乎就没怎么用到,几乎都是与设计模式打交道的。
虽然说友元能提高效率,表达清晰,但是破坏了类的封装机制,所以一般情况下不建议使用友元,
友元类简单demo:
// 类A,希望把私有成员公开给类Bclass A{friend class B;// 把B设置为友元类public:A(int i):m_i(i){}private:int m_i;int getInt(){return 100;}};// 类B,希望访问类A中的私有成员class B{public:B(A a):m_a(a),m_n(a.m_i){}void setInt(){m_n = m_a.m_i;}//访问私有变量int getInt(){return m_a.getInt();};//访问私有函数private:int m_n;A m_a;};void main(){A a(8);B b(a);int n = b.getInt();}
例子很简单,就是在类A中声明一下,类A是类B的友元类,这样类B就有访问类A私有成员的权限啦,但是类A还是不能访问类B的私有成员的,切记。
友元函数木有this指针,也就是说其实它是类外函数,它的声明放在私有或者公共段并没有什么区别,友元函数是不能被继承的,就像父亲的朋友未必是儿子的朋友。
声明: friend + 普通函数声明
实现位置:可以在类外或类中
实现代码:与普通函数相同
调用:类似普通函数,直接调用
友元函数使用demo如下:
class CTest{friend void Print(const CTest& test);};void Print(const CTest& test){cout<<"print "<<endl;}void main(){CTest test;Print(test);}
1 0
- 【C++】友元类和友元函数(转)
- C++: 友元函数和友元类详解
- 『C/C++』友元函数和友元类
- C++——友元函数和友元类
- 友元函数和友元类
- 友元函数和友元类
- 友元类和友元函数
- 友元函数和友元类
- 友元函数和友元类
- 友元函数和友元类
- 友元函数和友元类
- 友元函数和友元类
- 友元函数和友元类
- 友元函数和友元类
- 友元函数和友元类
- 友元类和友元函数
- 友元函数和友元类
- 友元函数和友元类
- 深入理解CRITICAL_SECTION
- Python学习1
- ch6.jsp内置对象--response对象
- Android 混淆打包标准proguard 配置
- 8.lua学习笔记:协程
- C++友元函数和友元类
- c# 5.0入门经典笔记
- bootstrap 下拉菜单
- Object-C加强 Block使用
- HDU 5135 Little Zu Chongzhi's Triangles(状态压缩dp)
- python3 安装protobuf模块
- Linux常用命令(四十四) - ifconfig
- asp.net读取数据库到文本框,修改再更新到数据库
- sql server After触发器 instead of触发器