我正在阅读 C++ Primer, 3rd Ed (Lippman and Lajoie),它说当需要重新分配向量以便为添加的更多元素腾出空间时push_back()
,元素在新空间中复制构造,然后在旧元素上调用析构函数。我很困惑为什么这是必要的——为什么不能逐位复制数据?我假设答案与动态内存分配有关,但我目前的推理是,即使向量元素处理动态内存,实际存储在元素中的数据将是指针,这意味着按位复制将保留它们指向的位置并且不会出现任何问题。我可以看到重新定位元素指向的动态分配的内存将是一个问题,因为它会使指针无效,但据我所知,向量重新定位没有理由这样做。
有人可以给我一个不应该一点一点移动的类的简单示例吗?