为什么赋值运算符只能作为成员函数进行重载,而不能作为友元函数重载
classT{...friendconstT&operator=(T&left,constT&right);}constT&operator(T&left,constT&...
class T{...friend const T& operator=(T& left,const T& right);}
const T& operator(T& left,const T& right){/*left=right*/...return left;}
为什么不能这么写 展开
const T& operator(T& left,const T& right){/*left=right*/...return left;}
为什么不能这么写 展开
4个回答
展开全部
因为编译器会提供一个默认的赋值运算符,你如果把自己定义赋值运算符的写成友元的话,函数的参数列表不一样,不会发生重载;所以编译器禁止了这种行为。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好久不写c++了,
我给你这个一个思路
它是可以作为左值的,
所以需要return
*this;
这种形式返回引用
友元函数是没有this指针的,对吧
赋值运算符返回的是必须引用类型,这个是关键!!!
所以,RT
我给你这个一个思路
它是可以作为左值的,
所以需要return
*this;
这种形式返回引用
友元函数是没有this指针的,对吧
赋值运算符返回的是必须引用类型,这个是关键!!!
所以,RT
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这应该是一个规定吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询