Информация об изменениях

Сообщение Re[5]: Инициализация через initializer_list и protected/priv от 31.05.2022 6:49

Изменено 31.05.2022 8:31 rg45

Re[5]: Инициализация через initializer_list и protected/priv
Здравствуйте, Marty, Вы писали:

M>Вопрос в том, что не надо ли на всякий случай все конструкторы выписывать


В этом нет нужды. Единственный определенный пользователем конструктор одновременно является и конструктором по умолчанию. Все остальные специальные функции-члены (конструкторы, деструктор и операторы присваивания) по-прежнему генерируются компилятором.
Re[5]: Инициализация через initializer_list и protected/priv
Здравствуйте, Marty, Вы писали:

M>Вопрос в том, что не надо ли на всякий случай все конструкторы выписывать


В этом нет нужды. Единственный определенный пользователем конструктор одновременно является и конструктором по умолчанию. Все остальные специальные функции-члены (конструкторы, деструктор и операторы присваивания) по-прежнему генерируются компилятором.

P.S. Это в том случае, когда пользователь определяет какую-нибудь специальную функцию член (например, конструктор перемещения или копирования), тогда он может скрывать другие специальные функции-члены или делать их удаленными. В этих случая может потребоваться определить дополнительно какие-то спец. функции-члены. А определенный пользователем дефолтный конструктор никак не влияет на другие функции-члены, поэтому прописывать их явно нет необходимости, если сгенерированный компилятором вариант устраивает, разумеется.

Ну и помимо этого существуют еще и заповеди типа: "если вы определили конструктор копирования, то определите также и копирующий оператор присваивания" и т.п.