move-assignment-operator

    3热度

    1回答

    我有一个简单的RAII包装管理某些资源。这里的接口: struct ResourceWrapper { explicit ResourceWrapper(RESOURCE resource); ResourceWrapper(const ResourceWrapper& other); ResourceWrapper& operator=(const Resourc

    0热度

    1回答

    我不明白为什么为什么移动构造函数没有被调用,而移动赋值能够,而如果我使用X行中的移动函数,它用于调用移动构造函数。任何人都可以告诉什么是调用移动构造函数的方式或语法。 #include <iostream> #include <cstring> #include <algorithm> #include <memory> using namespace std; class String

    6热度

    2回答

    当定义自定义析构函数时,C++标准委员会选择删除隐式定义的移动赋值运算符的原理是什么?

    0热度

    1回答

    所以我写了五大对于具有动态int数组 struct intSet { int *data; int size; int capacity; intSet(); ~intSet(); intSet(const intSet& is); intSet(intSet &&is); intSet &operator=(con

    3热度

    2回答

    我(错误地)在我的程序如下分配: std::shared_ptr<SI::Program> m_program; // in class m_program = std::make_unique<SI::Program>(); // in method 当我发现这一点,我首先想知道为什么这甚至编译。原来shared_ptr有一个特殊的移动赋值操作符unique_ptr对象。 我的问题是,这

    2热度

    2回答

    我有一个类,移动任务被明确删除,因为对象不应该是可移动的。但是,如果我分配到使用这个RVO类的一个实例,编译器给我的错误: main.cpp:12:16: note: candidate function has been explicitly deleted 也编译器提现有的拷贝赋值运算符,但不使用它。 这里是我的代码(或(不)运行例如here): class foo { public:

    3热度

    1回答

    我一直在阅读Bjarne Stroustrup(C++的创建者)编写的“C++编程语言第4版”一书,并且已经学习移动构造函数和移动作业。 在书中为类向量(参见下面的标题1),他展示了如何实现移动构造函数(见下面的2),并表示移动任务是以类似的方式实现的,但并未显示如何。我自己实现了这个移动任务(见下面的3),并且一切看起来都很好,但是,我不确定我是否已经正确实施了它。 我没有收到任何错误,看过很多

    -1热度

    2回答

    我想实现复制和移动任务,但我不明白我应该如何使用它们。我已阅读以下主题 When did copy assignment operator called? 但它没有为我工作。 类: class Directory{ string name; public: Directory(string name):name(name) { } ~Direct

    1热度

    2回答

    我不明白移动任务是否可以/自由地更改变量x的地址,并使所有存储& x的指针和引用无效。 我觉得这是错误的,因为默认的移动任务会移动每个成员并保留这个指针,但它是有保证的吗? 编辑:实施例 int x(1), y(2); int& ref(x); x = std::move(y); // ref still valid ?

    4热度

    3回答

    下面的代码提供了错误: use of deleted function ‘constexpr B::B(const B&)’ 现在,我知道这是因为拷贝构造函数是(故意)通过指定移动构造函数隐式删除,并且复制该向量导致对(已删除的)复制构造函数的调用。我想我也明白为什么使用vector的拷贝构造函数和赋值操作符。我清楚地想要使用移动构造函数和赋值运算符:移动对象,所以也移动它包含的矢量。那么,如