Выбор ответа Junior Современный C++20/23 обновлено

Назначенные инициализаторы

Вопрос

Какая запись корректна в C++20 для struct Config { int port; bool tls; std::string host; };?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Config c{.port = 443, .host = "x"};. Назначенные инициализаторы должны идти в порядке объявления полей, пропускать поля можно (пропущенные инициализируются по умолчанию, tls станет false). - Обратный порядок, разрешённый в C, в C++ запрещён. - Синтаксис с двоеточием это…

Варианты ответа

  1. Config c{.host = "x", .port = 443};
  2. Config c{port: 443};
  3. Config c{.port = 443, 1, "x"};
  4. Config c{.port = 443, .host = "x"};правильный ответ

Разбор

Назначенные инициализаторы должны идти в порядке объявления полей, пропускать поля можно (пропущенные инициализируются по умолчанию, tls станет false).

  • Обратный порядок, разрешённый в C, в C++ запрещён.
  • Синтаксис с двоеточием это расширение GCC, а не стандарт.
  • Смешивать назначенные и позиционные инициализаторы нельзя.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.