TGViewer
Senior C++ Developer Senior C++ Developer @seniorcpp · 11.6K subscribers
Post #3276 1K
Глубокое копирование

Термин глубокое копирование подразумевает создание нового объекта и копирование всех значений полей исходного объекта в новый объект. Если поле является указателем, то вместо копирования самого указателя создается новый объект, на который указывает исходный указатель, и новый указатель на этот новый объект сохраняется в новом объекте.

Это отличается от поверхностного копирования, при котором копируются только значения полей, включая указатели, но не объекты, на которые они указывают.

В этом примере у нас есть класс Deep, который содержит указатель data. В копирующем конструкторе мы создаем новый объект Deep, копируя значение, на которое указывает data в исходном объекте, а не сам указатель.
В функции main мы создаем объект obj1 и затем создаем obj2, используя копирующий конструктор. Затем мы меняем значение, на которое указывает data в obj2, и это не влияет на obj1, что подтверждает, что было выполнено глубокое копирование.
More from @seniorcpp
  1. Oct 1, 2026malloc стал безопасен В предыдущих версиях использование низкоуровневых функций, унаследов…
  2. Sep 30, 2026Алгоритм copy_n Используется для копирования элементов из одного контейнера в другой.
  3. Sep 28, 2026Упрощаем код с помощью if constexpr и концептов C++17/C++20 Смотреть статью
  4. Sep 27, 2026#вопросы_с_собеседований Как следует обрабатывать ошибки во время выполнения в C++? — Ошиб…
  5. Sep 25, 2026Проверка возможности конструирования элемента с набором конкретных параметров Когда шаблон…
  6. Sep 24, 2026Передача адреса переменной в функцию в Си. https://youtu.be/OXhrYl9no2A
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →