10得票2回答
当按值返回时不会调用复制构造函数

我正在尝试使用C++构造函数。以下是我的代码:#include <iostream> using namespace std; class ArrayWrapper { public: // default constructor produces a moderatel...

17得票2回答
为什么局部变量的const属性会阻碍返回值的移动语义?

struct STest : public boost::noncopyable { STest(STest && test) : m_n( std::move(test.m_n) ) {} explicit STest(int n) : m_n(n) {} ...

15得票3回答
C++11编译器何时能使RVO和NRVO优于移动语义和常量引用绑定?

考虑当从函数中返回启用了移动语义的“整个”对象时,例如 std::basic_string<>:std::wstring build_report() const { std::wstring report; ... return report; } 那么...

29得票1回答
为什么C++允许移动一个包含已删除移动操作的对象的类?

为什么我可以在一个包含已删除移动语义类型字段的类上使用 std::move(情况1),但不能在这样一个类的实例上使用它(情况2)? 我理解情况2。我明确了删除了移动构造函数,所以如果我尝试移动它,就会出现错误。但是我希望这也适用于情况1,在这种情况下,此类也正在移动。class TestNo...

146得票6回答
移动赋值运算符和 `if (this != &rhs)`

在一个类的赋值运算符中,通常需要检查被赋值的对象是否为调用对象,以免出现问题:Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do the assignment...

9得票1回答
C++:使用右值引用的std::move未移动内容

示例程序: #include <iostream> #include <string> #include <vector> template <typename T> void print(const T& _vec) { ...

14得票2回答
关于后置构造函数和移动语义的问题

我之前已经问过类似的问题,但是对于某些细节仍不清楚。 在什么情况下会调用postblit构造函数? 移动一个对象的语义是什么?它会被postblitted和/或析构吗? 如果我通过值返回一个局部变量,会发生什么?它会被隐式移动吗? 如何将表达式强制转换为rvalue?例如,泛型swap会是...

12得票2回答
当超出vector容量时,为什么resize()会导致向量内容的复制而不是移动?

以下是类 X 的定义(除了显式定义的特殊成员函数之外,其他特殊成员函数对此实验不相关): struct X { X() { } X(int) { } X(X const&) { std::cout << "X(X const&)" <...

21得票1回答
为什么 std::map 的移动构造函数不是 noexcept 的?

正如cppreference.com所说, 映射通常实现为红黑树。 因此,移动一个std::map只是移动指向根节点的指针以及其他信息,比如大小。那么为什么std::map的移动构造函数没有标记为noexcept呢?

43得票6回答
如何实际实现五个规则?(这是一个关于IT技术的问题)

更新:请看文末 问题1:如果你想让一个管理重型资源的类能够通过值传递,以简化和美化它的使用,你会如何实现五个规则?或者并不需要所有五项规则吗? 实际上,我正在开始一些关于3D成像的工作,其中图像通常是128*128*128 double。但是,能够编写这样的代码将使数学计算更加容易: U...