C++赋值操作符为什么一定要作为成员函数被重载

RT这样说,重载的时候只要指明形参都是相同的类,不就好了吗... RT
这样说,重载的时候只要指明形参都是相同的类,不就好了吗
展开
 我来答
第627号病房
2010-05-18 · TA获得超过219个赞
知道答主
回答量:75
采纳率:0%
帮助的人:0
展开全部
如果赋值操作符可以作为全局函数重载的话,可能会出现表达错误的语句

int operator=(int a, integer b);
这样重载之后,语句
2 = a; 表述也是正确的,但是却是明显的语法错误
为了避免此类错误,需要将赋值操作符重载为成员函数
--------------------------------------------------
首先要知道,如果类中没有重载赋值操作符时,类会自动生成一个默认的赋值操作符。例如,有两个同类对象A和B,当你没有将赋值操作符重载,而进行 A=B 的操作时,编译器会自动调用赋值操作将B的数据成员拷贝到A中。
而如果你重载了一个全局的赋值操作符,那么编译器不知道是否还需要再自己合成一个赋值操作符,从而引发歧义。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式