1. 临时对象
return obj(i);
注释:编译器明白,创建的对象没有其他需求,所以直接把这个对象创建在返回值外面的内存单元,
所以仅需调用一次构造函数,并不会调用析构函数,效率比较高
2. 创建本地对象,然后返回
obj o(i);
return o;
注释:将发生三件事:首先,o被创建,于此同时构造函数被调用。然后,拷贝构造函数把o拷贝到返回值外部存储单元里。
最后,当o在作用于结尾时,调用析构函数,因此效率比较低。
1. 临时对象
return obj(i);
注释:编译器明白,创建的对象没有其他需求,所以直接把这个对象创建在返回值外面的内存单元,
所以仅需调用一次构造函数,并不会调用析构函数,效率比较高
2. 创建本地对象,然后返回
obj o(i);
return o;
注释:将发生三件事:首先,o被创建,于此同时构造函数被调用。然后,拷贝构造函数把o拷贝到返回值外部存储单元里。
最后,当o在作用于结尾时,调用析构函数,因此效率比较低。