|
Просто Лис
|
|||||||||||
Инициализация переменных простого типа через фигурные скобки30.06.2024, 17:15. Показов 1560. Ответов 10
Метки нет (Все метки)
Доброго времени суток.
Читаю учебник по с++20, там предлагается инициализировать переменные так:
= и не париться различием в синтаксисе?Добавлено через 6 минут UPD: это "скобочная инициализация", появилась в с++11.
0
|
|||||||||||
| 30.06.2024, 17:15 | |
|
Ответы с готовыми решениями:
10
Особенность инициализация значений массива через фигурные скобки Фигурные скобки при выводе переменных Конкатенация через фигурные скобки |
|
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
|
|||||||||||
| 30.06.2024, 17:29 | |||||||||||
|
Здравствуйте! Я не знаю всех преимуществ. Но вот так будет ошибка:
Вспомнил еще. Инициализация нулем.
1
|
|||||||||||
|
фрилансер
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,002
|
||
| 30.06.2024, 17:35 | ||
|
Рыжий Лис, со списком инициализации не проканает суживающее преобразование
Добавлено через 51 секунду
0
|
||
|
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
|
||||||
| 30.06.2024, 17:59 | ||||||
|
Еще нашел отличие: Агрегатная инициализация
Добавлено через 16 минут Вот еще пример. Если ставить круглые скобки, компилятор думает, что это объявление новой функции.
0
|
||||||
|
6136 / 2830 / 1039
Регистрация: 01.06.2021
Сообщений: 10,324
|
|
| 30.06.2024, 18:07 | |
|
Рыжий Лис, в языке С++ рекомендуется дефолтно использовать {}. Остальные виды нужно использовать только тогда, когда это нужно.
1
|
|
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
||||||||
| 30.06.2024, 19:06 | ||||||||
a, b и d существуют в языке с начала времен (способы a и d унаследованы из C). Способ c доступен с С++11. Отличий нет, кроме запрета на сужающие преобразования в обоих вариантах с {} (который в С++11 и далее распространяется и на вариант d).{}, то почему, например, std::vector<>::emplace_back использует (), а не {} для инициализации нового элемента? Ведь методы emplace появились только в С++11, вместе с новым синтаксисом униформной инициализации. Тем не менее они избегают униформной инициализации и настаивают на использовании "устаревшего" синтакисиса с (). (Методы emplace работают через аллокаторовский construct, то есть за использование () отвечает именно construct, но суть вопроса это не меняет.)Более того, в С++20 ввели агрегатную инициализацию через () (с костылями) - все для поддержки тех же методов emplace на основе ().
1
|
||||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 30.06.2024, 19:10 | ||
|
0
|
||
|
Модератор
|
||
| 30.06.2024, 21:21 | ||
|
и с векторами есть еще особенность с такой инициализацией, если тип вектора целочисленный (включая чары), то вызовется не конструктор с параметрами количество и элемент, а создастся вектор из 2 элементов я вот про такое например std::vector<std::string> vec{8, "a"}; получится вектор из 8 элементов, а вот тут std::vector<int> vec{8, 2}; вектор из 2 элементов, вместо ожидаемых 8
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 30.06.2024, 21:26 | ||
|
0
|
||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
|||||||
| 30.06.2024, 21:52 | |||||||
emplace_back новый элемент вектора создается как XY(10, 20) - именно с круглыми скобками. А такая инициализация к классу XY не применима (до C++20). Чтобы заставить этот код работать (до C++20), вам пришлось бы ручками писать соответствующий конструктор для класса XY.Вопрос в том, почему изначально в недрах emplace_back не было сделано так, чтобы новый элемент создавался как XY{ 10, 20 }. Почему не использовался новый метод инициализации?
0
|
|||||||
| 30.06.2024, 21:52 | |
|
Помогаю со студенческими работами здесь
11
Фигурные скобки: Мне пишут что ошибка в закрытие скобки после return. Фигурные скобки Фигурные скобки в C++11
Фигурные скобки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|