函数的返回类型到底意味着什么?当我们返回一个物体时会发生什么?返回值和返回引用之间的区别是什么?
class A{
...
};
A f1(){
A *temp = new A;
return *temp;
}
const A& f2(){
A *temp = new A;
return *temp;
}
int main(){
A object1 = f1();
A object2 = f2();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我已经使用逐步调试(F10)在VS2010上尝试了这个示例代码.令人惊讶的是,复制构造函数只调用了2次.一次,来自f1函数,一次来自main函数.为什么从f1调用复制构造函数以及如何构造object1?我知道这是一个非常糟糕的代码,泄漏资源,但我试着把注意力集中在这个问题上.