Что выведет программа?
Anonymous Quiz
20%
Не скомпилируется
32%
0
26%
1
23%
Неопределенное поведение
This media is not supported in your browser
VIEW IN TELEGRAM
✅ IT work - актуальные вакансии и проекты для программистов всех уровней
🧠 Machine learning Jobs - вакансии Машинное обучение, работа с данными, аналитика.
🦫 Golang jobs - работа для Golang разрработчиков
🐍 Python Jobs - работа для Python программистов
☕️ Java Jobs - вакансии для java программистов
📱JS jobs - Javascrpt вакансии
🔥 English it - прокачай английский бесплатно для получения лучшего рабочего оффера.
🧠 Machine learning Jobs - вакансии Машинное обучение, работа с данными, аналитика.
🦫 Golang jobs - работа для Golang разрработчиков
🐍 Python Jobs - работа для Python программистов
☕️ Java Jobs - вакансии для java программистов
📱JS jobs - Javascrpt вакансии
🔥 English it - прокачай английский бесплатно для получения лучшего рабочего оффера.
Рассмотрим две реализации std::make_unique. В каких из трёх случаев контент сконструированных объектов a и b будет разный?
Anonymous Quiz
26%
1
29%
2
26%
3
18%
Ни в одном
👆Пояснение к предыдущему вопросу
👨🏻💻 Правильный ответ -- только в первом случае. a создаст объект из пяти шестёрок, а b будет равен
В третьем примере дефолтные конструкторы сделают одно и тоже.
Задачи и тесты по программированию | proghub
👨🏻💻 Правильный ответ -- только в первом случае. a создаст объект из пяти шестёрок, а b будет равен
{5, 6}.
Так происходит из-за list-init initialization.
Во втором случае объект b будет равен просто {"a", "b"}
. Объект a мог быть ошибкой, если бы типы Args&&... вывелись бы как указатели на char*, тогда мог бы сработать конструктор от двух указателей но шаблоны выводятся как const char(&)[2]
и поэтому этот конструктор не срабатывает. То есть этот пример не скомпилируется и не является правильным ответом.В третьем примере дефолтные конструкторы сделают одно и тоже.
Задачи и тесты по программированию | proghub
Код скомпилируется?
Anonymous Quiz
32%
Нет, переменные в lambda иммутабельные, но decltype вернёт, что тип мутабельный
30%
Да, переменные в lambda неконстантные, поэтому их можно менять
19%
Да, так как только константные переменные могут изменяться, if constexpr не разрешит
19%
Нет, вызывать std::move в capture нельзя
Что выведет программа?
Anonymous Quiz
22%
Не скомпилируется, так как exception принимается по значению
24%
G
30%
SG
20%
S
4%
Неопределенное поведение
👆Пояснение к предыдущему вопросу
👨🏻💻 Мы кидаем
Мы должны принимать
Задачи и тесты по программированию | proghub
👨🏻💻 Мы кидаем
SpecialException
. Оно унаследовано от GeneralException
, но принимается по значению, поэтому динамический тип e будет GeneralException
, не SpecialException
. В С++ community такой эффект называют ещё slicing
.Мы должны принимать
exception
по ссылке catch (GeneralException& e)
, тогда динамический тип будет SpecialException
, и программа выведет S
.Задачи и тесты по программированию | proghub
Что напечатает программа?
Anonymous Quiz
28%
0
23%
1
23%
Не скомпилируется
26%
Implementation defined
Что выведет программа?
Anonymous Quiz
9%
a
27%
ab
36%
aab
14%
b
5%
Неопределенное поведение
9%
Не скомпилируется
🔥2
👆Пояснение к предыдущему вопросу
👨🏻💻 Казалось бы, мы проинициализировали
Чтобы это починить, можно написать так:
👨🏻💻 Казалось бы, мы проинициализировали
stream
строкой "a" и сначала выведем "a", потом добавим к стриму "b" и выведем "ab" и в итоге должно быть "aab", но нет.stringstream
содержит в себе позицию буффера. И при дефолтном конструкторе от строки, он будет нулём.operator<<
перезаписывает следующую позицию в буффере и поэтому во втором cout выведется bЧтобы это починить, можно написать так:
std::stringstream ss("a", std::ios_base::out|std::ios_base::ate);Поэтому многими стайлгайдами запрещено использование
stringstream.
Задачи и тесты по программированию | proghubИмеется кортеж вида T = (4, 2, 3). Какая из операций приведёт к тому, что имя T будет ссылаться на кортеж (1, 2, 3)?
Anonymous Quiz
22%
T[0] = 1
17%
T = (1) + T[1:]
41%
T = (1,) + T[1:]
20%
T.startswith(1)