return-value-optimization相关内容

C++:通过引用返回和复制构造函数

C++ 中的引用让我感到困惑.:) 基本思想是我试图从函数返回一个对象.如果可能的话,我想不返回指针(因为那样我必须手动delete它)并且不调用复制构造函数(为了效率,自然添加: 也是因为我想知道我是否无法避免编写复制构造函数). 总而言之,以下是我发现的执行此操作的选项: 函数返回类型可以是类本身 (MyClass fun() { ... }) 或对类的引用 (MyClass ..

C 中的返回值优化和复制省略

有些人不知道可以传递和返回结构体按 C 中的值.我的问题是关于编译器在 C 中返回结构时制作不必要的副本. GCC 等 C 编译器是否使用 返回值优化(RVO) 优化还是仅 C++ 的概念?我所读到的关于 RVO 和复制省略的所有内容都与 C++ 有关. 让我们考虑一个例子.我目前正在 C 中实现 双双数据类型(或者更确切地说是 float-float 开始,因为我发现单元测试很容易).考虑 ..
发布时间:2021-12-23 17:18:18 C/C++开发

禁用 g++ 的返回值优化

我需要在命令行上使用什么标志来禁用由 g++ 编译器自动启用的返回值优化? 解决方案 -fno-elide-constructors C++ 标准允许实现省略创建临时对象,该临时对象仅用于初始化另一个相同类型的对象.指定此选项会禁用该优化,并强制 G++ 在所有情况下调用复制构造函数.[来源:man gcc] ..

我可以在 Rust 中按值有效地返回一个对象吗?

我想用一个函数初始化一个大对象.目前我有: fn initialize(mydata: &mut Vec>) {/* ... */} 我更喜欢: fn initialize() ->Vec>{/* ... */} 我听说 C++ 经常实现返回值优化 (RVO),如果你很幸运并且有一个好的编译器.我们可以在这里禁用复制并让它由传递给函数的隐藏指针返回吗?RVO 是语言的一部分还是可选的优化? ..
发布时间:2021-12-20 16:03:50 其他开发

c++11 返回值优化还是移动?

我不明白什么时候应该使用 std::move 以及什么时候应该让编译器优化...例如: 使用 SerialBuffer = vector;//让编译器优化它SerialBuffer 读取( size_t size )const{SerialBuffer 缓冲区(大小);读取(开始(缓冲区),结束(缓冲区));//返回值优化返回缓冲区;}//显式移动SerialBuffer 读取( size_t ..
发布时间:2021-12-01 15:36:44 C/C++开发

什么是复制省略和返回值优化?

什么是复制省略?什么是(命名的)返回值优化?它们意味着什么? 它们会在什么情况下发生?什么是限制? 如果有人提到过这个问题,您可能正在寻找简介. 有关技术概述,请参阅标准参考. 请参阅常见案例此处. 解决方案 简介 有关技术概述 - 跳至此答案. 对于发生复制省略的常见情况 - 跳至此答案. 复制省略是大多数编译器实现的优化,用于在某些情况下防止额外的(可 ..

C++ get 方法 - 按值或按引用返回

我问了一个非常简单的问题,但不幸的是我自己想不出答案. 假设我有一些数据结构来保存设置并充当设置映射.我有一个 GetValue(const std::string& name) 方法,它返回相应的值. 现在我想弄清楚 - 什么样的返回值方法会更好.显而易见的方法是让我的方法像 std::string GetValue(const std::string& name) const ..
发布时间:2021-07-09 20:50:46 C/C++开发

C ++:按引用和复制构造函数返回

C ++中的参考文献使我感到困惑. :) 基本思想是我试图从函数中返回一个对象.我想这样做而不返回指针(因为那我必须手动delete),并且如果可能的话也不必调用复制构造函数(出于效率考虑,自然会添加:也是因为我想知道是否不能避免编写副本构造函数. 总而言之,这是我发现的执行此操作的选项: 函数返回类型可以是类本身(MyClass fun() { ... })或对该类的引用(My ..