如何解决使用非指针数据移动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 举报,一经查实,本站将立刻删除。