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