#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不是左值(引用),所以会导致跟预期不一样
1110

被折叠的 条评论
为什么被折叠?



