libstdc
为了观察std::vector中push_back和empl
为了观察std::vector中push_back和emplace_back的区别,我写了以上程序。根据输出发现,Base(1)被构造了3次,其中复制构造函数调了2次,Base(2)被构造了1次,没调用复制构造函数。那么Base(1)的复制构造函数被调了2次呢? 那么还有一次复制构造函数来自哪里?注意到 std::vector 为了支持任意大小,在增加元素的时候会出现扩容操作,而扩容的方法是重新分配空间,然后把数据复制过去,因此会在复制的过程中调用复制构造函数