一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的友元函数。
因此复数类的+-*/操作符应重载为友元函数。
一些双目运算符不能重载为类的友元函数:=、()、[]、->。
类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。
若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好。
若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数。
当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类型的一个引用)。如果左边的操作数必须是一个不同类的对象,或者是一个基本数据类型的对象,该运算符函数必须作为一个友元函数来实现。
运算符重载为类的成员函数,他的参数个数会比“该运算符的操作符”少一,而运算符重载为友元函数时,他的参数与其操作个数是相同的。
当需要重载运算符的运算具有可交换性时,选择重载为友元函数。
分享到:
相关推荐
第3章运算符重载大连理工大学主讲人-赵小薇面向对象方法与C++程序设计运算符重载方法普通函数成员函数友元函数重载方法成员函数重载运算符何时用成员函数重载算符?当
C++中运算符的重载,++重载为前增量和后增量!!!!!
这是一个精讲c++运算符重载的好东西,是我认真收集和整理的,自我认为这是一个很好的东西。希望大家喜欢!
COMSOL 内置函数算符
§6.2电子的自旋算符和自旋函数[参照].pdf
2、改写:将1中运算符重载作为非成员函数,和成员函数 3、定义一字符串类String,用于存放不定长的字符串,重载运算符”= =”,”<”,”>”,进行比较运算。 4、设计一个秒表,定义一个时间Time类,包含小时、分、秒...
2、改写:将1中运算符重载作为非成员函数,和成员函数 3、定义一字符串类String,用于存放不定长的字符串,重载运算符”= =”,”<”,”>”,进行比较运算。 4、设计一个秒表,定义一个时间Time类,包含小时、分、秒...
波函数和薛定谔方程力学量算符.doc
本文简化Infeld的工作.利用阶梯算符较简便地推导出球谐函数中量子数(?)的递推关系.结合已知的关于量子数m的递推关系从而只利用阶梯算符法即可推出球谐函数的所有递推关系。
我们介绍了权重高达8的N = 4 $$ \ mathcal {N} = 4 $$ SYM中1 / 2-BPS算子的所有相关器的计算以及有效超引力的一些非常高权重的相关函数 行动。 通过结合谐波多项式形式主义实现最新开发的简化算法来完成计算。 我们...
(1)根据给定文法,先求出FirstVt和LastVt集合,构造算符优先关系表(要求算符优先关系表 输出到显示器或者输出到文件); (2)根据算法和优先关系表分析给定表达式是否是该文法识别的正确的算术表达式(要求输出...
(1)构造该算符优先文法的优先关系矩阵或优先函数; (2)输入串应是词法分析的输出二元式序列,即某算术表达式“实验项目一”的输出结果。输出为输入串是否为该文法定义的算术表达式的判断结果。 (3)算符优先...
今天小编就为大家分享一篇关于C++中运算符重载的规则语法实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
输入算符优先文法,输出FIRSTVT、LASTVT、算符优先关系表 对输入串,输出分析过程
实现算符优先过程 具体的算法 和结构体 一般报告都适用
能够实现:输入文法,判断是否是算符文法!输出每个非终结符的FRISTVT集和LASTVT集!构造算符优先分析表!对输入的句子进行规约!包括实验结果!
它实现了几个运算符和函数重载,但允许使用“char”转换函数或 ' 转置重载的任何字符数组函数。 有必要从 MatLab 路径之一中的 MatLab 文件夹创建一个文件夹。 文件夹名是类名,带有@前缀。 .m 名称是类名。 ...
对用户自定义的文法进行算符优先的分析,友好的人际交互界面,计算FIRStVT和LASTVT,并且对一段输入进行分析
从孙悟空的火眼金睛漫谈量子算符函数的排序.docx