为什么A我初始化时没有调用默认构造函数std::vector?
std::vector<A> vec; //Doesn't call constructor
vec.push_back(A(2)); //Calls constructor
Run Code Online (Sandbox Code Playgroud)
我不明白这个,请问有人详细解释一下吗?
构造向量时,v它不包含任何A对象(因此不需要调用构造函数).在填充时v,您显式构造A对象,然后将这些对象复制或移动到向量中的内存中.
永远不会有任何默认构造A对象,因此永远不会调用默认构造函数(如果您标记它,您的代码将编译正常= delete).