提问人:newstudent 提问时间:8/13/2020 最后编辑:newstudent 更新时间:8/16/2020 访问量:111
使用非指针数据移动 ctor 和移动赋值运算符
Move ctor and move assignment operator with non pointer data
问:
我是C++编程的新手,在这里是stackoverflow。我希望你能原谅我在这里的第一个问题,这些问题写得不太好。
我正在 BigData 类中添加移动构造函数和移动赋值运算符。 有人可以告诉我它们写得好不好吗? 多谢
这是我在 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;
};
但现在,我不确定我是否做得好。由于 Data 不是指针,因此我无法编写与编写 Data 结构方法时相同的内容。 现在当我做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;
};
答: 暂无答案
评论
std::move()