社区
C++ 语言
帖子详情
请问 重载=运算符的函数为什么 必须是类的成员函数而不能是类的友元函数啊?
xjyr
2008-03-06 06:17:35
请问 重载=运算符的函数为什么 必须是类的成员函数而不能是类的友元函数啊?
先谢谢啦
...全文
284
13
打赏
收藏
请问 重载=运算符的函数为什么 必须是类的成员函数而不能是类的友元函数啊?
请问 重载=运算符的函数为什么 必须是类的成员函数而不能是类的友元函数啊? 先谢谢啦
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
arong1234
2010-07-03
打赏
举报
回复
它允许是友元对你有什么特别的好处?我看不出它作为友元的任何理由!
友元是为了那些不属于本类但是和本类有特别关系的函数和类的,而operator=当然是属于本类的,自我复制是OO的一个本质特征之一![Quote=引用 4 楼 xjyr 的回复:]
就是,人家标准委员会规定,俺们没办法不听话.
----------------------------
为什么这样规定啊?
[/Quote]
Yanger_xy
2010-07-03
打赏
举报
回复
规矩,无规矩不成方圆嘛,让你怎么用你就怎么用就行了.
liutengfeigo
2010-07-03
打赏
举报
回复
假如是全局的你认为合理不?
dirkjww
2010-07-03
打赏
举报
回复
你想想"="的左右 把右操作数赋值给左操作数
那么 你对一个对象用"="号.那是不是左操作数肯定是这个数呢?
也就是说 传过去this指针啊....
假设搞成友元不你可以让第二个参数成为赋值号左边的..
是不是乱套了`?
我感觉其实这个就和流运算一个道理.为什么流运算符要搞成友元?
就是因为格式是cin>>a
而不是a>>cin
lyle3
2008-03-20
打赏
举报
回复
支持坏,哈哈
paidfighting
2008-03-20
打赏
举报
回复
违反规定是不对的,小心被抓 - -
友元的话,可以实现很多逻辑意义下不应该有的赋值,这样不就乱了套了
xjyr
2008-03-20
打赏
举报
回复
我想肯定是有原因的!
taodm
2008-03-07
打赏
举报
回复
楼主啊,'1'为什么念"yi"?
珍惜生命远离CPP
2008-03-07
打赏
举报
回复
假如可以随便写那么基本类型=允许不允许重载?
xjyr
2008-03-07
打赏
举报
回复
就是,人家标准委员会规定,俺们没办法不听话.
----------------------------
为什么这样规定啊?
hastings
2008-03-06
打赏
举报
回复
就是,人家标准委员会规定,俺们没办法不听话.
珍惜生命远离CPP
2008-03-06
打赏
举报
回复
规定=的重载必须是类成员函数
hityct1
2008-03-06
打赏
举报
回复
即可以是类的成员函数,也可以是类的友元函数。
vc6.0好像不支持 是类的友元函数。
相关推荐
华为工程师,带你实战C++视频精讲
这是一套全面而系统的C++学习:1、C++对C的全面提高(
类
型增强,
函数
重载
,默认参数,引用,new/delete 内联
函数
,
类
型强转,命名空间,系统string
类
;2、封装,
类
与对象,友元,
运算符
重载
;3、继承与派生,多态,UML,设计模式;5、文件IO流,模板,STL,,异常机制。
C++编程入门系列之四十七(多态性:
运算符
重载
为
类
的
友元
函数
)
在上一节中讲了
运算符
重载
为
类
的
成员
函数
的方式和规则,这一节接着讲
运算符
重载
的另一种方式--
运算符
重载
为
类
的
友元
函数
。 在编程入门系列之二十二--友元中讲到过,
友元
函数
通过
类
的对象可以访问
类
的公有、保护和私有成员,也就是
类
的所有成员
友元
函数
都能访问到。所以
运算符
重载
为
类
的
友元
函数
以后也可以访问
类
的所有成员。 与
运算符
重载
为
成员
函数
时不同的是,
重载
的
友元
函数
不属
C++学习(35)
1. 只能使用
成员
函数
重载
的
运算符
有= () [] ->new delete 在多数情况下,将
运算符
重载
为
类
的
成员
函数
和
类
的
友元
函数
都是可以的。但
成员
函数
运算符
与
友元
函数
运算符
也具有各自的一些特点: (1)一般情况下,单目
运算符
最好
重载
为
类
的
成员
函数
;双目
运算符
则最好
重载
为
类
的
友元
函数
。 (2)以下一些双目
运算符
不能
重载
为
类
的
友元
函数
:=、()、[]、->。 (3)
类
型转换
函数
只
元算符
重载
时
友元
函数
和
成员
函数
的选择
一般情况下,单目
运算符
最好
重载
为
类
的
成员
函数
;双目
运算符
则最好
重载
为
类
的
友元
函数
。 因此复数
类
的+-*/操作符应
重载
为
友元
函数
。 一些双目
运算符
不能
重载
为
类
的
友元
函数
:=、()、[]、->。
类
型转换
函数
只能定义为一个
类
的
成员
函数
而
不能
定义为
类
的
友元
函数
。 若一个
运算符
的操作需要修改对象的状态,选择
重载
为
成员
函数
较好。 若
运算符
所需的操作数(尤其是第一个操作数)希望有隐式
类
型转换...
<3>华为工程师 ,带你实战C++(2018版)
这是一套全面而系统的C++学习教程: 1,C++对C的全面提高(
类
型增强,
函数
重载
,默认参数,引用,new/delete 内联
函数
,
类
型强转,命名空间,系统string
类
。2,封装,
类
与对象,友元,
运算符
重载
。 3,继承与派生,多态,UML,设计模式。4,文件IO流,模板,STL,异常机制。
发帖
C++ 语言
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
6.3w+
社区成员
25.0w+
社区内容
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2008-03-06 06:17
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下