赋值运算符重载为什么要是成员函数

问题描述:为什么赋值运算符只能作为成员函数进行重载,而不能作为友元函数重载 大家好,小编来为大家解答以下问题,赋值运算符重载函数与拷贝构造函数有什么区别,为什么运算符重载函数的返回值是引用,今天让我们一起来看看吧!

为什么在C++中对赋值号“=”的重载只能使用成员函数而不可以使用友元函数?求高手、大神帮我解答!

赋值运算符重载为什么要是成员函数的相关图片

C++规定=,[ ],(),->这四个运算符只能被重载为类的非静态成员函数,其他的可以被友元重载,主要是因为其他的运算符重载函数都会根据参数类型或数目进行精确匹配,这四个不具有这种检查的功能,用友元定义就会出错。

为什么c++运算符重载只能重载为成员函数或友元函数的相关图片

为什么c++运算符重载只能重载为成员函数或友元函数

这个问题很不错唉,有一个问题,举个例子来说,假设有一个类apple,apple a1 = ap2;(ap2已经定义好)与apple a1; a1 = a2;的结果是不一样的,前者是用复制构造函数对a1进行初始化,而第二种形式是先调用构造函数对a1初始化(假设无参),然后调用赋值运算符对象a2的所有成员的值赋值到对象a1中,ok,此时假说如apple中有指针类型的成员变量,这时就存在两个指针指向同一块内存区域的问题,极易造成内存泄漏,此时需要对赋值运算符进行重载,例如:

apple& apple::operator = (const apple & ap){xxxxxx},那么,假如将赋值运算符重载为友元形式,那么一些非左值(比如常量)会被编译器隐式转换成一个临时对象,这样非左值就会出现在=号左边,但是编译器并不会认为它出错,但是这样就破坏掉了=的语义,所以“=”只能重载为成员函数....。

希望对你有帮助。

[]、()、->、=这几个运算符如果要重载,为什么必须重载为成员函数而不能重载为友元的相关图片

[]、()、->、=这几个运算符如果要重载,为什么必须重载为成员函数而不能重载为友元

倘若你是用vc6做编译器的话,那么代码的开头应该写成:

#include

不写成:

#include

using

namespace

std;

就是用上面的一行替代下面的两行。

因为vc6这个编译器不支持在iostream做头文件的时候运行友元函数。

什么运算符一定要重载友元函数,什么时候一定要重载为成员函数?的相关图片

什么运算符一定要重载友元函数,什么时候一定要重载为成员函数?

关于这个问题, 有些人的说法是避免二义性。

但我的理解是, 本身就是规范. 是为了书写简单, 同时不容易出错,才规定必须重载为成员的.。

因为, 常规来说, 这几个运算符重载, 都是操作本身成员的, 。

所以重载为成员函数就是自然而然的了.。

开发者干脆就写入规范了.

其实如果没这个规定, 重载为友元, 甚至在极端情况下, 操作的成员都是public情况下, 重载为普通全局函数也是没什么的.。

但既然规定了,就没必要深究原因, 遵循规范就好了.。

问什么赋值运算符只能作为成员函数进行重载,而不能作为友元函数?

一定重载为友元的(一定是多元运算符):当该运算符的第一个运算数为其他类的时候,比如。

cout<<a;<<符号的第一个运算数为iostream类。

原因是,多元运算符重载为成员函数的时候,是调用的第一个运算数的成员函数。

一定重载为成员函数的:一元运算符必须重载为成员函数,其他的任意。

原文地址:http://www.qianchusai.com/%E8%B5%8B%E5%80%BC%E8%BF%90%E7%AE%97%E7%AC%A6%E9%87%8D%E8%BD%BD%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E6%98%AF%E6%88%90%E5%91%98%E5%87%BD%E6%95%B0.html

1988年虚岁多大2020,1988年虚岁今年多大了

1988年虚岁多大2020,1988年虚岁今年多大了

4k播放是什么意思,4k播放器什么牌子好

4k播放是什么意思,4k播放器什么牌子好

上海虹口夜景图片真实图片,上海虹口夜景图片真实图片高清

上海虹口夜景图片真实图片,上海虹口夜景图片真实图片高清

这样做值得作文不少于六百字,这样做值得作文不少于六百字以上

这样做值得作文不少于六百字,这样做值得作文不少于六百字以上

描写神态的片段两百字,描写神态的片段两百字作文

描写神态的片段两百字,描写神态的片段两百字作文

熊猫的外形有什么特点,熊猫的外形有什么特点和特点

熊猫的外形有什么特点,熊猫的外形有什么特点和特点

关于故乡的食物的作文150字,关于故乡的食物的作文150字怎么写

关于故乡的食物的作文150字,关于故乡的食物的作文150字怎么写

心灵鸡汤短文200字,心灵鸡汤短文200字作文

心灵鸡汤短文200字,心灵鸡汤短文200字作文

我想当什么职业作文,我想当什么职业作文二年级

我想当什么职业作文,我想当什么职业作文二年级

红领巾的角各是多少度,红领巾每个角的度数是多少

红领巾的角各是多少度,红领巾每个角的度数是多少

三国志战略版霸业攻略 - 实用技巧与进阶指南 三国志战略版爆头骑战法搭配全解析 三国志2吞食天地下载 - 经典FC游戏免费下载 三国志8重制版百度云下载 - 免安装中文版游戏资源 三国志战略版赵云开荒攻略 | 新手高效开荒指南 三国志战略版50级盾兵养成与搭配攻略 三国志战略版回归奖励 - 专属福利活动详情 三国志战略版郭淮战法详解 - 详细技能与搭配攻略 三国志战略版:张角盾刘备阵容搭配攻略 真三国无双6PSP版下载 - 经典动作游戏PSP移植版 三国志战略版紫将搭配攻略 - 低成本强力阵容推荐 三国志战略版:土匪怎么打分城?详细攻略指南 三国志战略版S3跨区分组信息 - 玩家指南 三国志战略版阵容搭配推荐 - 实用武将组合攻略 三国志战略版典藏版与普通版区别对比 - 详细解析 三国志战略版攻略 | 新手入门与阵容搭配指南 三国志11二线实用武将推荐与分析 三国志战略版土匪掉落指南 - 简明攻略 三国志战略版策力上限详解 - 游戏机制与提升方法 三国志战略版官职对应关系详解 三国志战略版张飞辅助玩法全攻略 - 原创指南 三国志战略版S1签到奖励详情 - 新手福利指南 三国志战略版曹操搭配指南 - 阵容与战法推荐 三国志大战天码表 - 完整天码查询与说明 三国志11遗迹有什么用?详细作用解析 三国志战略版S3赛季攻略 - 新手进阶指南 三国志8重制版官方壁纸下载 - 高清经典游戏画面 三国志8重制版秘籍大全 - 实用修改技巧与通关攻略 徐晃 - 《三国志战略版》武将攻略与阵容搭配 三国志战略版张飞兵书加点与战法搭配攻略