Что выведет программа?
Anonymous Quiz
21%
Не скомпилируется
31%
0
25%
1
22%
Неопределенное поведение
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
31%
2
26%
3
17%
Ни в одном
👆Пояснение к предыдущему вопросу
👨🏻💻 Правильный ответ -- только в первом случае. 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 вернёт, что тип мутабельный
29%
Да, переменные в lambda неконстантные, поэтому их можно менять
18%
Да, так как только константные переменные могут изменяться, if constexpr не разрешит
21%
Нет, вызывать std::move в capture нельзя
Что выведет программа?
Anonymous Quiz
21%
Не скомпилируется, так как exception принимается по значению
23%
G
32%
SG
19%
S
4%
Неопределенное поведение
👆Пояснение к предыдущему вопросу
👨🏻💻 Мы кидаем
Мы должны принимать
Задачи и тесты по программированию | proghub
👨🏻💻 Мы кидаем
SpecialException. Оно унаследовано от GeneralException, но принимается по значению, поэтому динамический тип e будет GeneralException, не SpecialException. В С++ community такой эффект называют ещё slicing.Мы должны принимать
exception по ссылке catch (GeneralException& e), тогда динамический тип будет SpecialException, и программа выведет S.Задачи и тесты по программированию | proghub
Что напечатает программа?
Anonymous Quiz
29%
0
23%
1
23%
Не скомпилируется
26%
Implementation defined
Что выведет программа?
Anonymous Quiz
9%
a
26%
ab
37%
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)
👆Пояснение к предыдущему вопросу
👨🏻💻 Поскольку кортежи неизменяемы, их нельзя модифицировать на месте, но можно создать новый кортеж с желаемым значением. Изменить первый элемент можно за счёт создания нового кортежа из частей имеющегося с помощью срезов и конкатенации:
При этом одноэлементные кортежи требуют хвостовой запятой, иначе число в скобках это всего лишь число.
Задачи и тесты по программированию | proghub
👨🏻💻 Поскольку кортежи неизменяемы, их нельзя модифицировать на месте, но можно создать новый кортеж с желаемым значением. Изменить первый элемент можно за счёт создания нового кортежа из частей имеющегося с помощью срезов и конкатенации:
Т = (1,) + Т [1: ]. При этом одноэлементные кортежи требуют хвостовой запятой, иначе число в скобках это всего лишь число.
Задачи и тесты по программированию | proghub
👍3