小编Gri*_*rig的帖子

按值返回对象与引用,对象构造之间的区别

函数的返回类型到底意味着什么?当我们返回一个物体时会发生什么?返回值和返回引用之间的区别是什么?

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?我知道这是一个非常糟糕的代码,泄漏资源,但我试着把注意力集中在这个问题上.

c++ return-type return-value

1
推荐指数
1
解决办法
83
查看次数

标签 统计

c++ ×1

return-type ×1

return-value ×1