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

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

为什么在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字作文

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

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

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

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