我有一个 vector ,其元素类型为A 类
。类 A 具有显式定义的复制构造函数,但复制运算符已设为私有(private)且未定义(不打算使用)。如果我将新元素插入到 vector 中,如下所示
A walker; //This calls the default constructor.
std::vector< A > vec;
std::vector< A >::iterator it = vec.begin();
vec.insert( it, walker ); //Shouldn't this call the copy constructor?
我收到一条错误消息,提示复制运算符是私有(private)的。但 vector 不应该使用复制构造函数吗?
最佳答案
vector
确实对插入的元素使用了复制构造函数。然而,vector
内部仍然需要赋值运算符,这符合 vector
类型可赋值的要求。我相信 C++11 现在只需要移动赋值。
关于c++ - vector.insert(...) 调用构造函数还是赋值运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7855563/