C++: Автоматическое перераспределение векторов вызывает конструкторы копирования? Почему?

Я читаю C++ Primer, 3rd Ed (Lippman and Lajoie), и там говорится, что когда вектор необходимо перераспределить, чтобы освободить место для дополнительных элементов, добавляемых с помощью push_back(), элементы копируются в новом пространстве, а затем вызывается деструктор старых элементов.Я не понимаю, зачем это нужно - почему нельзя просто копировать данные побитно? Я предполагаю, что ответ связан с динамическим распределением памяти, но моя текущая цепочка рассуждений заключается в том, что даже если векторные элементы обрабатывают динамическую память, данные, фактически хранящиеся в элементах, будут указателями, а это означает, что побитовое копирование сохранит место, на которое они указывают. к и не будет представлять никаких проблем. Я вижу, как перераспределение динамически выделенной памяти, на которую указывают элементы, может быть проблемой, поскольку это приведет к аннулированию указателей, но, насколько я могу судить, у векторного перераспределения нет причин для этого.

Кто-нибудь может привести простой пример класса, который не следует перемещать побитно?

9
задан user1476176 23 June 2012 в 01:00
поделиться