gpt4 book ai didi

c++ - g++ 中是否存在这样的优化?

转载 作者:行者123 更新时间:2023-11-30 01:31:22 25 4
gpt4 key购买 nike

考虑以下代码片段:

list<someClass>& method();
....
list<someClass> test = method();

这会是什么行为?请问这段代码:

  1. 从method()返回值优化返回的someClass实例的引用,然后在引用上执行someClass的拷贝构造函数?

  2. 避免以某种方式调用复制构造函数?

具体来说,我有返回非常大列表的方法,我想避免在每个返回值上调用复制构造函数。

编辑:嗯,抱歉,代码现在编译...

最佳答案

必须调用复制构造函数,因为这段代码必须进行复制:method() 函数返回对某个对象的引用,该对象的拷贝必须存储在变量 测试

由于您返回的是引用而非对象,因此无需进行返回值优化。

如果不想复制列表,可以将test作为引用:

list<someClass>& test = method();

但是,test 将引用原始列表,因此对 test 所做的任何修改也将对原始列表进行,并且每当原始列表被销毁时, test 将变得无效(这意味着您必须更加小心对象生命周期)。

关于c++ - g++ 中是否存在这样的优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3219959/

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