使用非指针数据移动ctor和移动赋值运算符

问题描述

我是C ++编程的新手,这里是stackoverflow的内容。希望您能原谅我在这里提出的第一个问题,但我写得不太好。

我在BigData类中添加了move构造函数和move赋值运算符。 有人可以告诉我他们写得好吗? 非常感谢

这是BigData类中使用的结构数据。这就是我实现这两种方法的方式。

struct Data {
    //...
Data(Data &&_d)
    {
        data = _d.data;
        _d.data = nullptr;
        size = _d.size;
        _d.size = 0;
    }

    Data& operator=(Data&& _d)
    {
        if (this != &_d)
        {
            delete[] data;
            data = _d.data;
            _d.data = nullptr;
            size = _d.size;
            _d.size = 0;
        }
        return *this;
    }
    
        unsigned char *data = nullptr;
        unsigned int size = 0;
    };

但是现在,我不确定自己是否做得很好。由于数据不是指针,因此我无法编写与编写数据结构的方法时相同的东西。 现在当我做BigData时bd2 = move(bd1); bd1保留在数据数组中...我应该以某种方式删除它吗?

class BigData {
public:
    
            BigData(BigData &&_bd)
        {
            m_data = _bd.GetData();
            m_crc = _bd.GetCrc();
            _bd.InvalidateCrc();
        }

    BigData& operator=(BigData &&_bd)
    {
        if (this != &_bd)
        {
            m_data = _bd.GetData();
            m_crc = _bd.GetCrc();
    
        }
        return *this;
    }

private:
    Data m_data;
    unsigned long int m_crc = -1;
};

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...