为什么 C++ 中的强制 RVO 需要公共析构函数?
作者:Fedor 提问时间:8/5/2021
请考虑下面的简单示例,其中函数返回一个带有私有析构函数的类对象,并且必须进行强制返回值优化 (RVO):barA class A { ~A() = default; }; A bar() { ret...
返回值优化 问答列表
作者:Fedor 提问时间:8/5/2021
请考虑下面的简单示例,其中函数返回一个带有私有析构函数的类对象,并且必须进行强制返回值优化 (RVO):barA class A { ~A() = default; }; A bar() { ret...
作者:Laurent 提问时间:3/14/2023
在反汇编应用程序时,我注意到与实例方法相比,在调用静态方法时,MSVC 生成的程序集操作码更多。即使两个函数相同(因此实例方法不使用 )。this 代码示例: struct matrix4 { ...
作者:roi_saumon 提问时间:4/28/2023
为了理解复制省略,我写了一个小例子 #include "iostream" using namespace std; struct Foo { Foo() { cout << "constru...
作者:Isuxiz Slidder 提问时间:5/21/2023
我正在学习移动语义,所以我写了一个小程序,如下所示: #include <iostream> using namespace std; int one_int = 123; class A {...
作者:glades 提问时间:5/31/2023
在下面的代码中,我尝试将一个单例实例注册到一个保留所有单例的全局数组中(在生产代码中,我可以根据模板参数实例化不同的单例,所以不用担心这个悖论:))。我想知道的是,我是否可以以某种方式获得 lambd...
作者:Mix Kira 提问时间:6/7/2023
我试图了解 RVO 在这种特殊情况下如何协同工作。shared_ptr 假设我有这个示例代码: class A { public: void action() {} }; class Cont...
作者:Luchian Grigore 提问时间:10/18/2012
什么是复制省略?什么是(命名的)返回值优化?它们意味着什么? 它们会在什么情况下发生?什么是限制? 如果你被引用到这个问题,你可能正在寻找介绍。 有关技术概述,请参阅标准参考。 在此处查看常见案例...
作者:Nathan Doromal 提问时间:7/20/2023
我在 C++ 上的 C++ 上的 gcc 13.1 上尝试了以下操作11/17/20/23,但在删除移动或复制构造函数时无法编译。 如果未删除这些构造函数,则命名返回值优化将起作用,并且不会执行复制...
作者:codepoet 提问时间:7/22/2023
假设有一个用户定义。一些帖子建议 C++ 类对象“永远不会”在堆上分配,除非分配了 .但!另一方面,有些帖子建议,按值从函数返回本地外观的类对象不一定复制任何数据。所以!这种对象的数据首先存储在哪里?...
作者:spdie 提问时间:8/1/2023
我已经为静态转换编写了这样一个模板函数作为练习: template<typename cT, typename T> inline constexpr cT sCast(T carg) { ret...