5 подходов к удаленной разработке на C++ с помощью CLion.
https://blog.jetbrains.com/clion/2022/08/5-approaches-to-remote-cpp-dev/
https://blog.jetbrains.com/clion/2022/08/5-approaches-to-remote-cpp-dev/
The JetBrains Blog
5 Approaches to Remote C++ Development With CLion – Webinar Recording | The CLion Blog
The recording for our webinar, 5 Approaches to Remote C++ Development With CLion, with Matt Ellis and Timur Doumler, is now available for you to watch. Subscribe to our community newsletter to receive
Что даёт использование квалификатора volatile int value = 0;?
Anonymous Quiz
63%
Уберегает переменную от оптимизации компилятора
16%
Обеспечивает атомарный доступ к переменной
6%
Это алиас для static constexpr
15%
Указывает, что переменная определена в другой единице трансляции
Есть базовый класс и есть его наследник. Возможно ли вызвать метод наследника через указатель на базовый класс, если он не определён как виртуальный или этого метода просто нет в базовом?
Anonymous Quiz
30%
Нет, это невозможно
24%
Можно,если,например,привести указатель на базовый класс к указателю на класс-наследник с static_cast
34%
Можно, через динамическое приведение типов для указателя (dynamic_cast)
11%
Можно: автоматически произойдёт неявное приведение типов
Может ли класс в С++ реализовывать сразу несколько интерфейсов?
Anonymous Quiz
39%
Да, интерфейсов можно реализовывать сколько угодно
7%
Нет, класс одновременно может реализовать только 1 интерфейс
37%
Интерфейсов как конструкции языка вообще нет в С++
18%
Реализовать можно только 1, а вот наследоваться от любого количества
Как будут вызываться функции g(fun1(),fun2())?
Anonymous Quiz
29%
Компилятор придерживается left-to-right стратегии, поэтому сначала вызов func1(), потом funс2()
9%
Компилятор придерживается right-to-left стратегии, поэтому сначала вызов func2(), потом funс1()
7%
Compiler Error. Недопустимо использовать временные значения в качестве аргументов функции
54%
Порядок вычисления аргументов стандартом не определён. Он может зависеть компилятора и его опций.
В C++ что явно не запрещено, то
Anonymous Quiz
24%
разрешено
6%
запретим потом
59%
может вызвать неопределенное поведение
11%
подлежит обсуждению в стандарте
С PATH_MAX не всё так просто
C и C++ программисты в какой-то момент могут столкнуться с ограниченным размером PATH_MAX и задаться вопросом – какого размера создавать буфер, чтобы отследить путь к директориям или файлам?
https://habr.com/ru/company/pvs-studio/blog/684636/
C и C++ программисты в какой-то момент могут столкнуться с ограниченным размером PATH_MAX и задаться вопросом – какого размера создавать буфер, чтобы отследить путь к директориям или файлам?
https://habr.com/ru/company/pvs-studio/blog/684636/
Хабр
С PATH_MAX не всё так просто
C и C++ программисты в какой-то момент могут столкнуться с ограниченным размером PATH_MAX и задаться вопросом – какого размера создавать буфер, чтобы отследить путь к директориям или файлам?...
Учебник по UE5 C++ | Введение в Unreal Engine 5 с C++ менее чем за 90 минут.
https://youtu.be/nvruYLgjKkk
https://youtu.be/nvruYLgjKkk
YouTube
UE5 C++ Tutorial | Introduction to Unreal Engine 5 with C++ in less than 90 Minutes
Watch the latest UE5 tutorials here: https://youtu.be/g9dU0eCy8RI (Way better quality)
UE5 (Game Engine): https://www.unrealengine.com/en-US/unreal-engine-5
Houdini (3D Modelling Application): https://www.sidefx.com/
Full Playlist: https://youtube.com/…
UE5 (Game Engine): https://www.unrealengine.com/en-US/unreal-engine-5
Houdini (3D Modelling Application): https://www.sidefx.com/
Full Playlist: https://youtube.com/…
#вопросы_с_собеседований
Виртуальный конструктор: что он собой представляет?
Ответ:
Это каверзный вопрос с IT-собеседований, который чаще всего задают после виртуальных деструкторов, чтобы запутать. Конструктор не может быть виртуальным, поскольку в этом нет никакого смысла: при создании объектов нет такой неоднозначности, как при их удалении. 😁
Виртуальный конструктор: что он собой представляет?
Ответ:
Это
Автоматический вывод типа аргумента шаблона класса
Выглядит название этой возможности довольно длинным и сложным, но на самом деле ничего сложного тут нет. Основная идея в том, что в C++17 вывод типов аргументов шаблонов выполняется и для стандартных шаблонов классов. Ранее это поддерживалось лишь для функциональных шаблонов. В результате оказывается, что раньше писали так:
Выглядит название этой возможности довольно длинным и сложным, но на самом деле ничего сложного тут нет. Основная идея в том, что в 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++.Что не так в этом отрывке кода на С++?
operator int() const {
return *this;
}
Выше приведен полный код для проверки.
Ответ:
Он скомпилируется, хотя некоторые компиляторы могут кинуть warning, сразу же объясняющий в чём суть ошибки. Но вот при запуске вы словите stack overflow. Дело в том, что operator int будет пытаться привести возвращаемое значение к типу int, что вполне можно сделать, ведь для текущего объекта у нас есть замечательный operator int, который это и делает. Т.е. функцию вызовет сама себя и будет продолжать это делать рекурсивно, пока не переполнится стек.
operator int() const {
return *this;
}
Выше приведен полный код для проверки.
Ответ:
Ручное управление памятью с С++ — одновременно один из самых больших плюсов и минусов в языке.
https://habr.com/ru/post/282544/
https://habr.com/ru/post/282544/
Хабр
Garbage Collector & C++
Ручное управление памятью с С++ — одновременно один из самых больших плюсов и минусов в языке. Действительно, эта парадигма позволяет создавать очень производительные программы, однако она же рождает...
Не используйте vector там, где можно было бы обойтись list или deque
Контейнер
С другой стороны, использование
Контейнер
vector предназначен для хранения в памяти непрерывной последовательности байтов. Поэтому при добавлении новых элементов, если памяти не хватит, контейнеру придется выделить новую память и копировать данные из старого места в новое. Если это происходит часто, то производительность кода может быть снижена значительно. В отличие от vector, контейнеры list или deque не хранят непрерывную последовательность данных, поэтому копирование не требуется.С другой стороны, использование
vector с предварительным резервированием (т. е. однократным выделением всей необходимой памяти) — самый быстрый и экономный способ. Потому что в случае list или deque небольшие куски памяти выделяются много раз. При выборе контейнера следует думать, какие именно операции над ним будут выполняться.