【发布时间】:2018-02-27 16:05:13
【问题描述】:
stackoverflow 的各位大神,请怜悯我。我的作业将在一小时后完成,一切正常——除了我一生无法弄清楚为什么我的移动构造函数(以及我的复制作业)会引发分段错误!
如果有帮助,请提供额外信息:该程序将创建一个称为 Chain 的数据结构,该结构基本上存储任何数据类型的数组,以及带有大小的 size_t。
提前致谢,如果您需要更多信息,请告诉我!
// Copy-constructor.
Chain(const Chain &rhs) {
size_ = rhs.size();
array_ = new Object[size_];
for (int i = 0; i < size_; i++) {
array_[i] = rhs.array_[i];
}
}
// Copy-assignment.
Chain& operator=(const Chain &rhs) {
Chain copy = rhs;
std::swap(*this, copy);
return *this;
}
// Move-constructor.
Chain(Chain &&rhs) {
rhs.array_ = nullptr;
}
【问题讨论】:
-
您的移动构造函数实际上并没有设置任何类成员,因此未来的操作可能会失败...
-
是的。不过,我认为这不是问题所在——我的实施正是我的教授建议的。
-
@BowmanBeric 那么你的教授错了。或者你误解了告诉你的内容。
标签: c++ constructor copy variable-assignment move