5 любопытных примеров C++ Lambda: рекурсия, constexpr, контейнеры и многое другое (включая C++23!)
https://www.cppstories.com/2020/07/lambdas5ex.html/
перевод: https://habr.com/ru/company/otus/blog/577074/
https://www.cppstories.com/2020/07/lambdas5ex.html/
перевод: https://habr.com/ru/company/otus/blog/577074/
C++ Stories
5 Curious C++ Lambda Examples: Recursion, constexpr, Containers and More
In this blog post I’ll show you a couple of interesting examples with lambda expressions. Do you know how to write a recursive lambda? Store them in a container? Or invoke at compile time?
See in the article.
Updated in August 2022: Added C++23 improvements.…
See in the article.
Updated in August 2022: Added C++23 improvements.…
Некоторые различия между ссылками и указателями
1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.
2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.
3. Ссылочная переменная не может быть обновлена.
1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.
2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.
3. Ссылочная переменная не может быть обновлена.
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++.