我对以下代码段代码为什么导致堆栈溢出有疑问。
class vector {
private:
public:
vector (const vector& rhs) {
/*
_b = (rhs.size() == 0) ? nullptr : new value_type[rhs.size()];
_e = _b + rhs.size());
copy(rhs.begin(), rhs.end(), _b);
} */
}
那为什么代码会从vector(const vector RHS)之类的参数中删除“&”,从而导致堆栈溢出?
答案 0 :(得分:1)
A(const A RHS) { ...}
不是复制构造函数。复制构造函数将使用(const
)对要复制的类型的引用。但是,在您的示例中,参数RHS
本身需要复制。