64,650
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
struct A
{
int i;
A(int n=0):i(n) {cout<<"A construct"<<endl;}
A(const A& a):i(a.i) {cout<<"A copy construct"<<endl;}
A operator =(const A& a){ i=a.i;cout<<"A operator ="<<endl; return *this;}
A fcn() {A la(1);return la;}
~A() {cout<<"A destruct"<<endl;}
};
int main(void)
{
{
A a(3),a1(a);
cout<<a1.i<<endl;
a1=a.fcn();
cout<<a1.i<<endl;
}
getchar();
return 0;
}
具名返回值优化:
A fcn()
{
A la(1);
return la;
}
会被编译器修改为:
void fcn(A &ret)
{
ret.A::A(1);
return;
}
//lthyxy: 严禁灌水~
//具名返回值优化:
A fcn()
{
A la(1);
return la;
}
//会被编译器修改为:
void fcn(A &ret)
{
A ret(1);
return;
}