move-semantics 相关问题

移动语义是一种编程语言功能,当源对象是临时对象或其他过期对象时,允许复制操作被更有效的“移动”替换。

[c ++使用指针时移动语义

使用原始指针时如何使用移动分配运算符。除了做类似的事情,还有别的方法吗:T dest = new T(); T src = new T(); (* dest)= std :: move(* src);

回答 1 投票 0

当使用已在其他地方进行std :: move'ed的变量时出现错误,或者至少是警告

This:void foo(int && r){std :: cout << r << std :: endl; } int main(){int i = 2; foo(std :: move(i));我= 3; //没有警告。有什么办法在这里得到一些警告吗?返回0; } ...

回答 4 投票 8

基类中的默认析构函数,如果有成员,则禁用子类中的move构造函数

为什么Base1中的默认(用户声明的)析构函数会阻止Child1类中移动构造函数/运算符的生成,但是当我将成员数据从Base(Base2)移到Child(...]时,一切正常,...( [

回答 1 投票 0

当不存在xvalue时,移动语义如何应用于以下代码段?

我偶然发现了下一篇文章,并且不了解C ++ 98和C ++ 11之间的性能差异,正如作者所说,这归因于移动语义。 #include ... ...>

回答 1 投票 0

添加自定义析构函数时,移动构造函数在派生类中消失

我有一个仅移动的Base类和一个Derived,它继承了Base的构造函数。我想给Derived一个自定义的析构函数,但是当我这样做时,它不再继承Base的move构造函数。非常...

回答 3 投票 3

r值参数确实是函数范围内的l值参数吗?

我在实现列表类的代码中找到以下代码段void push_front(const T&x){insert(begin(),x); } void push_front(T && x){insert(begin(),std:...

回答 1 投票 1

具有std :: move函数签名的传递向量

考虑下面的代码void foo(std :: vector v){//在这里做些事情} //调用函数vector v1 = {1,2,3}; foo(std :: move(v1));我的问题是,函数foo ...

回答 2 投票 3

为什么不能将变量移出闭包?

我具有以下功能:pub fn map_option (a2b:Box B>)-> Box )-> Option > {Box :: new(move | opt_a:...] >

回答 1 投票 1

使用具有移动语义的C ++ 11-不使用标准库(以及Boost.smart_ptr)

我正在使用Zephyr RTOS和ARM嵌入式微控制器(例如STM32 Nucleo系列(Cortex M4 / 0))使用Zephyr RTOS。最近,由于最近对C ++支持的重大改进,因此...

回答 1 投票 0

c ++为什么在移动构造函数中需要向前/向后移动

用移动的构造函数构造对象后,新对象应“窃取”“源”对象的资源,然后将其保留为不确定(但有效)状态。例如:#...

回答 1 投票 0

移动代码与复制代码相同时为5的规则?

说我的班级只有一个成员,一个int。 “移动”此int而不是复制它没有任何好处。因此,我是否需要都简单地执行...

回答 2 投票 2

C ++使用移动语义将参数传递给另一个函数

我有接受两个参数的函数,但是其中一个(映射容器)传递给另一个函数:void myFunc(const std :: map &myMap,int num){int x = ... ] >>

回答 1 投票 1

要前进还是不前进;如何确定在类用法的上下文中首选哪个?

class Test {public:typedef std :: set > DataSet;显式测试(const DataSet && d){for(auto&itr:d){std :: cout

回答 2 投票 3

前进或前进;如何确定在我的类使用情况下首选哪个?

class Test {public:typedef std :: set > DataSet;显式测试(const DataSet && d){for(auto&itr:d){std :: cout

回答 2 投票 0

为什么当T = int&?时构造函数Message(const T&data)与Message(T && data)冲突

模板 结构消息{T数据;显式消息(T && data):data(std :: move(data)){std :: cout <

回答 1 投票 3

编译器生成的move构造函数的行为是什么?

std :: is_move_constructible :: value == true表示T具有可用的move构造函数吗?如果是这样,它的默认行为是什么?考虑以下情况:struct foo {int * ...

回答 6 投票 33

左侧std :: vector资源在移动分配时会发生什么?

嗨,我试图找出C ++ 11标准是否已批准释放移动分配的std :: vector的资源。我举一个例子:std :: vector a {1,2} ...

回答 1 投票 0

了解'this'或其他参数是否是右值

假设我们有Base类及其成员函数Base doSomething(const Base&other)。我想知道如何确定此对象或其他对象是否为右值,例如,我需要一些...

回答 3 投票 -1

emplace_back初始化列表错误,当初始化列表适用于独立变量时

所以我一直在制作一个对象池类,它的用法如下:class MagicTrick {public:MagicTrick(int magic):_magic(magic){} } ...

回答 1 投票 0

可移动但不可复制的对象:按值传递还是按引用传递?

[仅考虑可移动但不可复制的对象(例如std :: thread或std :: unique_ptr),我想通过将其作为参数传递来转移该对象包含的资源的所有权...

回答 2 投票 1

© www.soinside.com 2019 - 2024. All rights reserved.