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
#вопросы_с_собеседований
Объясните ключевые слова mutable и volatile.

Ключевое слово volatile сообщает компилятору, что переменная может измениться без ведома компилятора. Переменные, объявленные как volatile, не будут кэшироваться компилятором и, таким образом, всегда будут считываться из памяти.

Ключевое слово mutable можно использовать для переменных-членов класса. Изменяемые переменные могут меняться из константных функций-членов класса.
Как следует обрабатывать ошибки во время выполнения в C++?

- Ошибки выполнения в C++ можно обрабатывать с помощью исключений.
- Этот механизм обработки исключений в C++ разработан для обработки ошибок в программном обеспечении, состоящем из независимо разработанных компонентов, работающих в одном процессе и находящихся под синхронным управлением.
- Согласно C++, любая подпрограмма, которая не выполняет своего обещания, генерирует исключение. Вызывающий код, который знает, как обрабатывать эти исключения, может их перехватить.
Как можно вызвать функцию C в программе на C++?

С использованием объявления extern "C".
Сколько раз будет исполняться этот цикл?
Anonymous Quiz
45%
300
9%
150
46%
Бесконечно
🛠 5 лучших инструментов управления проектами, о которых вы могли не знать

В старые времена для собрания по планированию спринта требовалась только доска, маркер и стикеры. В наши дни появились цифровые инструменты, которые делают планирование более эффективным, а спринт – более успешным.

https://proglib.io/sh/lvB3EpG7hz
Лучшие инструменты и советы начинающему C++ программисту

Хотите изучать C++? Делимся важными навыками, фреймворками и советами, которые помогут начинающему C++ программисту устроиться на работу.

https://proglib.io/p/cpp-dev-skills
#вопросы_с_собеседований
Какую проблему решает пространство имён?

Пространство имен — это идентификатор, предоставляющий несколько библиотек. Используется для устранения конфликтов имен, когда имя связано с двумя или более библиотеками. Включает внешние объявления библиотеки с уникальными пространствами имен, что исключает возможность конфликта.
В чем проблема со следующим кодом?

class A
{
public:
A() {}
~A(){}
};

class B: public A
{
public:
B():A(){}
~B(){}
};

int main(void)
{
A* a = new B();
delete a;
}

Поведение не определено, потому что деструктор A не является виртуальным.
Что за ошибка в приведенном ниже коде и как ее исправить?

my_struct_t *bar;
/* ... делаем что-то, включая указание bar на определенный объект my_struct_t */
memset(bar, 0, sizeof(bar));

Последним аргументом memset должен быть sizeof(*bar), а не sizeof(bar). sizeof(bar) вычисляет размер bar (то есть самого указателя), а не размер структуры, на которую указывает bar. Поэтому код можно исправить, используя sizeof(*bar) в качестве последнего аргумента вызова memset.
Указатели и Ссылки C++

Указатели и ссылки — фундаментальные механизмы C++, и их понимание обязательно для изучения языка. Выделение памяти, инициализация ссылок, утечки памяти, динамические массивы: эти и многие другие вопросы будут рассмотрены в данном уроке. Приятного просмотра!

https://youtu.be/tkDeI1PwpV0
Трюки с логарифмом

Функцию log можно использовать для ряда изящных решений.
Встроенные алгоритмы

Удобно использовать встроенные функции all_of, any_of и none_of для быстрой проверки элементов коллекции на соответствие условию.
Проверка специализации типа

Иногда встает задача проверить, является ли конкретный тип данных специализацией определенного шаблона. Для этого можно использовать синтаксис шаблонов template.
Проверка возможности конструирования элемента с набором конкретных параметров

Когда шаблонный класс задан в виде template<class T, typename... Args>, бывает трудно понять, какие аргументы можно использовать. Метод is_constructible из библиотеки type_traits даёт неполный ответ: он показывает, существует ли конструктор под конкретные аргументы. Для более полной картины можно использовать еще один шаблон.
Вызов функции через кортеж

Креативное применение шаблонов, которое позволяет вызвать любую функцию, передав в неё параметры в виде кортежа.
Шаблон Voodoo

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

Больше интересного по ссылке.