#include <iostream>
using namespace std;
class myclass {
public:
myclass();
myclass(const myclass &o);
myclass f();
};
myclass:: myclass(){
cout<<"Constructing normally"<<endl;
};
myclass:: myclass(const myclass &o){
cout<<"Constructing copy"<<endl;
};
myclass myclass::f(){
myclass temp;
return temp;
};
int main(){
myclass obj;
obj = obj.f();
return 0;
}
我发现这个例子在一本书这表明程序的输出应该是:当复制构造函数开始工作?
Constructing normally
Constructing normally
Constructing copy
但是,当我在我的编译器编译它,那只能说明下面写
Constructing normally
Constructing normally
输出
里面实际发生了什么?
这意味着你的编译器优化了复制离开第二行'OBJ = obj.f();' – EdChum
我无法得到它:(你能请详细说明它 – IAmBlake
阅读返回值。?优化和复制elision(你的书可能是旧的)。 –