社区
C++ 语言
帖子详情
[讨论]什么时候该用友元函数
Dugowe
2007-04-20 04:31:47
rt
...全文
511
10
打赏
收藏
[讨论]什么时候该用友元函数
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
做鸡真好吃
2007-09-17
打赏
举报
回复
哦
Dugowe
2007-09-17
打赏
举报
回复
谢谢各位了
coldplay968
2007-04-21
打赏
举报
回复
没有办法的时候才用
小一郎
2007-04-21
打赏
举报
回复
我还没主动用过
飞哥
2007-04-21
打赏
举报
回复
overload operator
plo2168424
2007-04-21
打赏
举报
回复
ding~
holerescue
2007-04-20
打赏
举报
回复
正如楼上所说,使用友元函数会在一定程度上破坏类的封装性.但是有些情况下为了解决特定的问题,不得不使用友元.如重载操作符operator>>, operator<<.
class Member
{
int i;
public:
friend ostream& operator<<(ostream& os, const Member& m)
{
return os << "Member: " << m.i << endl;
}
}
这里二元操作符<<的第一个操作数是ostream而不是Member,因此不能简单把operator<<作为Member的成员函数.
xlbdan
2007-04-20
打赏
举报
回复
如果是继承的情况下,
想共享数据,
就将基类的要共享的数据成员声明为protected即可
子类便可以访问它.
而如果是两上没有共享关系的类,
想访问对方的私有成员时,
有两种方法,
一种就是定义一个共有成员函数来返回那个私有成员,
但这种情况下,
除非返回的是引用,
否则都不能对私有成员进行修改.
另一种就是用友元了,
如果类A想完全使用类B的私有成员,
那就将A声明为B的友元类.
但友元破坏了封装性,
不得已的情况下不要使用.
yutaooo
2007-04-20
打赏
举报
回复
C++中最强耦合性的方式了. 不到山穷水尽不要用.
最有可能的是在重载 operator << 的时候. 但, 一旦你的接口足以满足operator <<你就不应该用.
taodm
2007-04-20
打赏
举报
回复
尽量不要用。
成员函数重载运算符和
友元函数
重载运算符的比较
原文地址: 1.对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用
友元函数
重载运算符函数参数表中含有两个参数。 对单木运算符来说,成员函数重载运算符的函数参数表中没有参数,而用
友元函数
重载运算符函数参数表中含有一个函数。这个问题要搞清楚,有一个this 对单木运算符来说,成员函数重载运算符的函数参数表中没有参数,而用
友元函数
重载运算符函数参数表中含有一个函数。这个问
面向对象的嵌入式学习总结(7)
友元:非类成员函数可以访问类的非公有成员(protected、private) 工程作用:提高程序运行效率(省去了函数调用返回等一系列时间) 友元的种类分为:
友元函数
、友元类(不传递,不继承、单向的)、友元成员函数 友元类注意事项:不传递 、不继承、单向; 友元成员函数注意事项 : 1.类前置声明必须将类的成员函数类外实现; 2.含有友元成员函数的类必须在代码最前 #include <iostream> using namespace std; class Test; class A { p
一个例子了解operator+
直击 operator+ 底裤
c++ operator定义为friend function
因为自己写一个小程序的时候弄了个问题,对于一些operator定义成成员函数则是不可以,而定义成friend则是可以,有些不理解,看到redsnow写的一篇文章有些启发,原文链接是http://blog.chinaunix.net/u/24250/showart_182419.html,原文如下。 对于class中将ope
运算符重载的注意事项
运算符重载的规则和注意事项
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章