对左值和右值的理解

#include <bits/stdc++.h>
using namespace std;
class Num{
    int real,imag;
public:
    Num(int real,int imag):real(real),imag(imag){cout<<"calling constructing"<<endl;}
    Num(const Num&n){
        cout<<"calling copy"<<endl;
        real=n.real;
        imag=n.imag;
    }
    Num operator +(const Num&n){
        cout<<"calling +"<<endl;
        return {real+n.real,imag+n.imag};
    }
    Num operator =(const Num&n){
        cout<<"calling ="<<endl;
        real=n.real;
        imag=n.imag;
    }
};

int main(){
    Num N1(5,6);
    Num N2(6,9);
    Num n3=N1+N2;



    return 0;
}

看结果
在这里插入图片描述
结果出乎意料,本来以为会有calling copy出现但是没有,然后发现
如果改为
在这里插入图片描述
就会有

在这里插入图片描述
因为N1+N2不是左值(引用),所以会导致跟预期不一样

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值