153得票3回答
自动生成默认/复制/移动构造函数和复制/移动赋值运算符的条件是什么?

我希望能够重新了解编译器通常在哪些情况下会自动生成默认构造函数、复制构造函数和赋值运算符。 我记得有一些规则,但是我不记得了,而且在网上也找不到可靠的资源。有人可以帮助吗?

113得票5回答
在C++中,如何处理可移动类型的互斥锁?

按照设计,std::mutex 不可移动也不可复制。这意味着一个拥有互斥锁的类 A 将不会接收默认移动构造函数。 我该如何以线程安全的方式使这种类型 A 可移动?

57得票2回答
为什么派生类具有移动构造函数而基类没有?

考虑以下示例:#include <iostream> #include <string> #include <utility> template <typename Base> struct Foo : public Base { us...

49得票4回答
移动构造函数应该使用const还是非const右值引用?

我曾在几个地方看到过有关复制和移动构造函数的推荐签名,如下所示: struct T { T(); T(const T& other); T(T&& other); }; 复制构造函数需要一个const引用,而移动构造函数需要一个非const...

42得票2回答
移动构造函数会自动生成吗?

我有一个包含许多STL容器的大类。 编译器会自动创建一个移动构造函数,将这些容器移动到目标位置吗?还是我需要自己创建一个?

38得票7回答
为什么移动构造函数或移动赋值运算符应该清除它的参数?

我正在学习一门C++课程,这里是一个示例移动构造函数的实现:/// Move constructor Motorcycle::Motorcycle(Motorcycle&& ori) : m_wheels(std::move(ori.m_wheels)), ...

36得票4回答
何时调用移动构造函数?

我对于移动构造函数和复制构造函数何时被调用感到困惑。我读了以下资源:Move constructor is not getting called in C++0x,C++11中的移动语义和右值引用,MSDN文章。这些资源要么太复杂了(我只想要一个简单的例子),要么只展示如何编写移动构造函数,而...

35得票5回答
移动构造函数和常量成员变量

我喜欢const成员变量的想法,尤其是当我将C函数包装成类时。构造函数接受一个资源句柄(例如文件描述符),它在整个对象生命周期内保持有效,并且析构函数最终关闭它。(这就是RAII的思想,对吧?) 但是使用C++0x移动构造函数时,我遇到了一个问题。由于析构函数也在“卸载”的对象上调用,我需要...

31得票5回答
显式移动构造函数?

explicit关键字建议用于可以接受一个参数的所有大多数构造函数,但不包括拷贝构造函数。 对于拷贝构造函数,它有一定的用途(禁止通过函数调用、返回等方式进行隐式复制),但这通常并不是所需的。 那么移动构造函数呢?有什么合理的使用情况使它们变得显式吗?在这里应该遵循什么样的最佳实践?

31得票3回答
在C++0x中传递/移动构造函数的参数

如果我有一个带有n个参数的构造函数,其中任何参数都可以是rvalue和lvalue。是否可能通过移动语义来支持rvalues而无需为每个可能的rvalue/lvalue组合编写2^n个构造函数?