当从函数参数中的临时值调用复制构造函数时
When copy constructor is called from a temporary value in function argument
我有一个问题,为什么下面的代码片段会导致堆栈溢出。
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
本身。
相关文章:
- 为用户定义的类正确调用复制构造函数/赋值运算符
- 构造函数初始值设定项列表未调用复制构造函数
- 如果函数按值传递并按值返回,将调用复制构造函数多少次
- 为什么为单个赋值操作调用复制构造函数和重载赋值运算符
- 如何在以下C 代码中在同一对象上调用默认值和复制构造函数
- 为什么在进行复制赋值之前调用复制构造函数
- 为什么在传递重载运算符的返回值时不调用复制构造函数
- 为什么在这种情况下调用复制构造函数和赋值运算符
- std::move_if_noexcept调用复制赋值,即使移动赋值为noexcept;为什么?
- C++移动语义:为什么调用复制赋值运算符=(&)而不是移动赋值运算符=(&&)?
- C++:在复制构造函数中调用复制赋值
- 为什么在这里调用复制构造函数而不是普通的构造函数和重载赋值运算符
- 按值返回调用复制构造函数或复制赋值运算符
- 如果未定义赋值运算符,是否调用复制构造函数?
- 如何从复制赋值操作符调用复制构造函数
- 当我们按值从方法返回对象时,为什么要调用复制构造函数
- 为什么在将对象作为按值参数传递给方法时调用复制构造函数?
- 按值返回时未调用复制构造函数:c++
- 复制构造函数——用相同的变量按值调用函数两次会导致问题
- 当按值返回列表初始化的对象时,为什么不调用复制构造函数?