Senior C++ Developer – Telegram
Senior C++ Developer
12.3K subscribers
1.36K photos
3 videos
610 links
Изучаем C++.

По вопросам сотрудничества: @adv_and_pr

РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba
Download Telegram
Некоторые различия между ссылками и указателями

1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.

2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.

3. Ссылочная переменная не может быть обновлена.
Есть базовый класс и есть его наследник. Возможно ли вызвать метод наследника через указатель на базовый класс, если он не определён как виртуальный или этого метода просто нет в базовом?
Anonymous Quiz
30%
Нет, это невозможно
24%
Можно,если,например,привести указатель на базовый класс к указателю на класс-наследник с static_cast
34%
Можно, через динамическое приведение типов для указателя (dynamic_cast)
11%
Можно: автоматически произойдёт неявное приведение типов
С PATH_MAX не всё так просто

C и C++ программисты в какой-то момент могут столкнуться с ограниченным размером PATH_MAX и задаться вопросом – какого размера создавать буфер, чтобы отследить путь к директориям или файлам?

https://habr.com/ru/company/pvs-studio/blog/684636/
Что выведет код?
Anonymous Quiz
18%
3
14%
4
50%
34
17%
Compiler Error
Работа с файлами

Для того, чтобы прочитать файл, понадобится выполнить те же шаги, что и при записи, с небольшими изменениями:
1) создать объект класса ifstream и связать его с файлом, из которого будет производиться считывание;
2) прочитать файл;
3) закрыть файл.
#вопросы_с_собеседований
Виртуальный конструктор: что он собой представляет?

Ответ:
Это
каверзный вопрос с IT-собеседований, который чаще всего задают после виртуальных деструкторов, чтобы запутать. Конструктор не может быть виртуальным, поскольку в этом нет никакого смысла: при создании объектов нет такой неоднозначности, как при их удалении.😁
Автоматический вывод типа аргумента шаблона класса

Выглядит название этой возможности довольно длинным и сложным, но на самом деле ничего сложного тут нет. Основная идея в том, что в C++17 вывод типов аргументов шаблонов выполняется и для стандартных шаблонов классов. Ранее это поддерживалось лишь для функциональных шаблонов. В результате оказывается, что раньше писали так:

std::pair<std::string, int> user = {"M", 25};

С выходом C++ 17 эту конструкцию стало можно заменить на эту:

std::pair user = {"M", 25};

Вывод типов выполняется неявно. Этим механизмом ещё удобнее пользоваться в том случае, когда речь идёт о кортежах. А именно, раньше приходилось писать следующее:

std::tuple<std::string, std::string, int> user ("M", "Chy", 25);

Теперь же то же самое выглядит так:

std::tuple user2("M", "Chy", 25);

Тут стоит отметить, что эти возможности не покажутся чем-то достойным внимания тем, кто не особенно хорошо знаком с шаблонами C++.