gpt4 book ai didi

c++ - c++03 与 11 中的返回值

转载 作者:太空宇宙 更新时间:2023-11-04 15:06:28 25 4
gpt4 key购买 nike

<分区>

我花了几个小时研究右值 和左值。这是我的理解

int main()
{
//.....
Foo foo = Bar1();
foo = Bar2();
//......
}

Foo Bar1()
{
//Do something including create foo
return foo;
}

Foo& Bar2()
{
//Do something including create foo
return foo;
}

在c++03下,Bar1()会复制返回对象(就在return之前),然后返回复制对象的地址;执行一个即将被销毁的对象的浪费拷贝。 Bar2() 将返回在函数内创建的对象。

在 c++11 下,Bar1()Bar2() 本质上是等价的(也等价于 Bar2() c++03).

是吗?如果不是,请详细说明。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com