Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
移动返回时调用的构造函数而不是复制
今天我发现这段代码并没有像我期望的那样工作 根据我的知识 对于 L 值 应该调用复制构造函数 而对于 R 值 应该选择移动构造函数 否则目的何在std move它实际上什么也不做 只是转换为 R 值 我正期待着return obj将调用复制
C11
movesemantics
初始化列表和移动语义
我是否可以将元素移出std initializer list
c
templates
C11
movesemantics
initializerlist
std::move on std::string 是否保证 .c_str() 返回相同的结果?
我想提供零复制 基于移动的 API 我想将一个字符串从线程 A 移动到线程 B 中 从思想上讲 移动似乎应该能够简单地将数据从实例 A 传递 移动到新实例 B 中 而无需复制操作 主要是地址 因此 所有数据 例如数据指针 都将被简单地复制
c
C11
move
movesemantics
当向量增长时如何强制移动语义?
我有一个std vector某个类的对象A 该类非常重要并且具有复制构造函数and移动定义的构造函数 std vector a myvec 如果我用以下内容填充向量A对象 例如使用myvec push back a 使用复制构造函数 向量的
c
vector
C11
resize
movesemantics
编译器如何知道移动局部变量?
我很好奇这个功能到底是如何工作的 考虑类似的事情 std unique ptr
c
C11
movesemantics
std::move 如何将表达式转换为右值?
我不完全理解的实现std move 也就是说 我对 MSVC 标准库中的这种实现感到困惑 template
c
C11
movesemantics
stdmove
C++ 移动赋值可防止复制交换习惯用法
在 C 中 复制交换惯用法通常是这样实现的 C operator C rhs swap this rhs return this 现在 如果我想添加一个移动赋值运算符 它应该如下所示 C operator C rhs swap this r
c
C11
movesemantics
从 char* 移动 std::string 的构造函数
我有一个函数f返回一个char 函数文档说 The user must delete returned string 我想构建一个std string从中 要做的琐碎事情是 char cstring f std string s cstri
c
string
C11
movesemantics
Push_back 与 emplace_back
我对之间的区别有点困惑push back and emplace back void emplace back Type Val void push back const Type Val void push back Type Val 由
c
visualstudio2010
STL
C11
movesemantics
C++ 为什么向我的类添加析构函数会使我的类不可移动?
编译器提醒我我正在使用删除的函数 https ideone com 3YAIlA include
c
grammar
movesemantics
是否有必要在 return 语句中使用 std::move ,并且应该返回右值引用吗?
我试图理解 C 11 的右值引用和移动语义 这些示例之间有什么区别 哪些示例不进行矢量复制 第一个例子 std vector
c
C11
movesemantics
rvaluereference
cfaq
移动构造函数被逗号运算符抑制
这个程序 include
c
C11
Return
movesemantics
commaoperator
提供正确的移动语义
我目前正在尝试弄清楚如何使用包含指向已分配内存的指针的对象正确执行移动语义 我有一个大数据结构 其中包含指向实际存储的内部原始指针 出于效率原因 现在我添加了一个移动构造函数并移动operator 在这些方法中我std move 指向新结构
c
C11
rvaluereference
movesemantics
如果从函数返回,局部变量的成员子对象也会被移动吗?
C 11 标准规定 如果满足复制省略的条件 12 8 31 实施应处理returned 局部左值变量和函数参数 首先作为右值 移动 如果重载解析未按详细说明成功 则应将其视为左值 复制 12 8 class copy p32 当满足或将满足
c
C11
localvariables
movesemantics
std::move 的逆函数是否存在? [复制]
这个问题在这里已经有答案了 std move当移动尚未被隐式允许时 例如often当从函数返回本地对象时 现在 我想知道 尤其是在本地返回和隐式移动的背景下 如果存在这样的逆元std move那将prevent移动对象 但仍然允许复制 这还
c
C11
movesemantics
不必要地清空移出的 std::string
libstdc 和 libc 都进行了移出std string对象为空 即使原始存储的字符串很短并且应用了短字符串优化 在我看来 这种排空使额外的和不必要的运行时开销 例如 这里是移动构造函数std basic string来自 libst
c
string
movesemantics
libstdc
移出的物体是否需要销毁?
如果我移动构建a from b 还是吗必要的破坏b 或者我可以不这样做就逃脱吗 这个问题在实施过程中闪过我的脑海optional
c
C11
destructor
rvaluereference
movesemantics
initializer_list 不可变性质导致过度复制
为什么可以访问std initializer list不允许我们更改其内容 这是一个很大的缺点std initializer list当将它用于其主要目的 初始化容器 时 因为它的使用会导致过多的复制构造 复制赋值 而不是移动构造 移动赋值
c
C11
movesemantics
c14
initializerlist
C++11:按值传递是否涉及移动语义?
我有一个如下所示的 API void WriteDefaultFileOutput std wostream str std wstring target Some code that modifies target before prin
c
C11
movesemantics
C++11“不可移动”类型[重复]
这个问题在这里已经有答案了 可能的重复 为什么 C 11 删除的函数参与重载决策 我对以下 C 11 代码有两个问题 include
c
gcc
C11
Clang
movesemantics
«
1
2
3
4
5
6
7
8
»