重运算符用成员函数还是友元函数
来源:互联网 发布:怎么样入驻淘宝达人 编辑:程序博客网 时间:2024/04/29 17:37
从一个二级题来看成员函数重载运算符和友元函数重载运算符
先上题:下列运算符都可以被友元函数重载的是:
A)=,+,-,\
B)[],+,(),new
C)->,+,*,>>
D)<<,>>,+,*
正确答案为D
我们知道,在运算符重载,友元函数运算符重载函数与成员运算符重载函数的区别是:友元函数没有this指针,而成员函数有,因此,在两个操作数的重载中友元函数有两个参数,而成员函数只有一个。
因此,我们可以总结如下:
1.对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用友元函数重载运算符函数参数表中含有两个参数。
对单木运算符来说,成员函数重载运算符的函数参数表中没有参数,而用友元函数重载运算符函数参数表中含有一个函数。这个问题要搞清楚,有一个this指针的问题。。。
2.双目运算符一般可以用友元函数重载和成员函数重载,但有一种情况只可以用友元函数重载。
即:双目运算符左边的变量是一个常量,而不是对象!!!这点很重要的额。
而关于运算符的重载,有以下经验可以记着:
1.对于单目运算符,建议选择成员函数;
2.对于运算符“=,(),[],->”只能作为成员函数;
3.对于运算符“+ =,-=,/=,*=,&=,!=,~=,%=,<<=,>>=”建议重载为成员函数;
4.对于其他运算符,建议重载为友元函数。
那么下面这个题的答案也就很明显了:
将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应该写为:?
答案为:x.operator+(operator*(y,z))
- 重运算符用成员函数还是友元函数
- 编写高质量代码——运算符重载,是成员函数还是友元函数
- 用成员函数还是用友元函数重载双目运算符?
- 操作符重载为成员函数还是友元函数?
- C++运算符重载 成员函数与友元函数
- 运算符重载 成员函数及友元函数
- 重载运算符之友元函数和成员函数
- 关于运算符重载 成员函数运算符重载 友元函数运算符重载
- C++ 友元函数和非成员运算符重载
- 运算符重载,何时用友元,何时用成员函数
- 运算符重载函数:友元函数 成员函数 普通函数
- 成员函数重载运算符和友元函数重载运算符的比较
- 成员函数重载运算符和友元函数重载运算符的比较
- 成员函数重载运算符和友元函数重载运算符的比较
- 成员函数重载运算符和友元函数重载运算符的比较
- 十七、运算符重载(一) 成员函数重载、友元函数重载、运算符重载规则
- 成员函数重载运算符和友元函数重载运算符的比较
- 运算符重载函数作为类成员函数和友元函数
- Eclipse小缺陷及规避方法积累
- 走进JAVA虚拟机(二)-------Java虚拟机的内存管理
- linux进程
- Meteor 实现文件下载
- [HDU 2068] RPG的错排 (错排问题)
- 重运算符用成员函数还是友元函数
- 【算法】最小生成树prim算法
- 我的vim配置和对应的插件
- android实现uc和墨迹天气那样的左右拖动效果
- QT下定时关机程序!
- 嵌入式 一个进程获取另一个指定名称进程的PID
- hdu 2647拓扑排序 容器
- 练习赛15.2.取余运算
- 分组背包