Для трёх int достаточно поэлементного копирования через список инициализации. Владения ресурсами здесь нет, поэтому автоматически созданный копирующий конструктор тоже был бы корректен.
Реализуйте конструктор копирования для данной структуры
Для трёх int достаточно поэлементного копирования через список инициализации. Владения ресурсами здесь нет, поэтому автоматически созданный копирующий конструктор тоже был бы корректен.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Ваша задача — добавить конструктор копирования в структуру CopyAssignExample, чтобы значения её членов правильно дублировались при копировании объекта.
struct CopyAssignExample {
int a;
int b;
int c;
// реализуйте конструктор копирования здесь
};
Ответ
Для трёх int достаточно поэлементного копирования через список инициализации. Владения ресурсами здесь нет, поэтому автоматически созданный копирующий конструктор тоже был бы корректен.
Явная учебная реализация с безопасной начальной инициализацией:
struct CopyAssignExample {
int a = 0, b = 0, c = 0;
CopyAssignExample() = default;
CopyAssignExample(const CopyAssignExample& other)
: a(other.a), b(other.b), c(other.c) {}
};
В реальном коде можно заменить тело копирующего конструктора на = default или не объявлять его вовсе. Это именно создание нового объекта; присваивание уже существующему объекту вызывает operator=. Пользовательское объявление конструктора также влияет на возможность агрегатной инициализации.