当从函数参数中的临时值调用复制构造函数时

When copy constructor is called from a temporary value in function argument

本文关键字:值调用 复制 构造函数 函数 参数      更新时间:2023-10-16

我有一个问题,为什么下面的代码片段会导致堆栈溢出。

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);
} */
}

那么,为什么代码从类参数向量(constvector RHS(中删除了"&",导致堆栈溢出呢?

A(const A RHS) { ...} 

不是复制构造函数。复制构造函数将采用对要复制的类型的(const(引用。然而,在您的示例中,需要复制参数RHS本身。