首页 / C++ / C++友元函数和友元类
C++友元函数和友元类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++友元函数和友元类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含945字,纯文字阅读大概需要2分钟。
内容图文
最近这些天在重温设计模式GOF23,偶然想到友元,不使用都快忘了
今天重温一下C++友元知识,学了之后几乎就没怎么用到,几乎都是与设计模式打交道的。
虽然说友元能提高效率,表达清晰,但是破坏了类的封装机制,所以一般情况下不建议使用友元,
友元类简单demo:
// 类A,希望把私有成员公开给类B class 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); }
原文:http://blog.csdn.net/yc7369/article/details/41707229
内容总结
以上是互联网集市为您收集整理的C++友元函数和友元类全部内容,希望文章能够帮你解决C++友元函数和友元类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。