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

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

Может ли кто-нибудь дать мне простой пример класса, который нельзя перемещать по крупицам?

Ответы на вопрос(2)

Ваш ответ на вопрос