社区
C++ 语言
帖子详情
为什么重载操作符,+=可以返回一个引用而+不可以?
oldmanzhao
2007-11-10 11:59:03
求教
...全文
172
7
打赏
收藏
为什么重载操作符,+=可以返回一个引用而+不可以?
求教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
loops
2007-11-11
打赏
举报
回复
哦,能通过,看来编译器真是把y+z当成是函数调用了,而=不是解释成operator=了
lleon
2007-11-11
打赏
举报
回复
MyClass &x = (y += z );
y += z 返回的引用是指向y的, 所以x是y的引用, 不会有临时变量的问题.
loops
2007-11-11
打赏
举报
回复
临时变量在某些情况下会延长生命周期的。
比如被引用的时候,相当于有了名字了。
不过我强烈怀疑:MyClass &x = y + z; 能通过编译吗?
lleon
2007-11-11
打赏
举报
回复
+是将两个对象值相加, 结果放在一个临时变量中, 如果返回引用, 就是指这个临时变量的引用
MyClass &x = y + z;
上面的变量定义将y+z返回的引用赋给x, 但是上面的语句执行完后, 临时变量消毁, x也就没意义了.
飞哥
2007-11-11
打赏
举报
回复
考虑是否作左值
blldw
2007-11-11
打赏
举报
回复
一般情况下,+运算符的两个操作数认为只是本身参与计算,但是内容并不改变,除非想使类对象经过某种运算之后改变自身或者返回左值,才考虑用引用。
tjltail
2007-11-11
打赏
举报
回复
y + z 产生的临时变量是const MyClass类型,这个应该通不过编译的呀
const MyClass& x = y + z ;
C++面向对象编程之六:
重载
操作符
(<<,>>,+,+=,==,!=,=)
重载
操作符
本质是函数,只是这个函数的函数名比较特别,为:operator后接需要重新定义的
操作符
的符号。例如,
重载
+号,函数名为:operator+;
重载
-号,函数名:operator-。因为
重载
操作符
本质是函数,所以实际上就是...
C++运算符
重载
++,--,+,-,+=,-=,输出输入运算符
一、运算符的定义 运算符
重载
就是运算符的“一符多用”。...像任意其他函数一样,
重载
操作符
具有
返回
类型和形参表,每个
操作符
用于内置类型都有关联的定义,当内置
操作符
和类型上的操作存在逻辑对应关系时,
操作符
...
c++中有些
重载
运算符为什么要
返回
引用
?
1. c++中有些
重载
运算符为什么要
返回
引用
,单单为了避免析构再构造吗? 不是。「有些」
重载
运算符要
返回
的
引用
,是为了
返回
它本身。如 class TestClass { private: int number; public: TestClass& operator...
理解:C++
重载
运算符等于(=)时为什么
返回
的是
一个
引用
(&)(&
引用
是什么意思)?
但在C++中,它有另外一种用法,即
引用
,这是在C++中特有的,对
引用
最通俗简单的理解就是取别名!我们做个简单尝试,看以下代码。 **#include<iostream> using namespace std; int main {** **int a=3;** **...
操作符
(++,+,+=,小于号,(),--等)
重载
操作符
(++,+,+=,小于号等)
重载
新建QT项目,编写头文件 #ifndef DIALOG_H #define DIALOG_H #include #include namespace Ui { class Dialog; } //编写自己的Label class myLabel { public: //一定要是...
C++ 语言
64,650
社区成员
250,477
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章