Запретный C++: знания, которые не должны были существовать
Так о C++ не рассказывал ещё никто. История длиной 30 минут, в которой вы узнаете о примерах кода на C++, воплощающих само Великое Зло.
02:00 Глобальные переменные.
08:00 Макросы.
12:36 Goto.
16:20 Указатель void *.
22:17 using namespace std.
27:19 New и Delete.
https://youtu.be/j0_u26Vpb4w
Так о C++ не рассказывал ещё никто. История длиной 30 минут, в которой вы узнаете о примерах кода на C++, воплощающих само Великое Зло.
02:00 Глобальные переменные.
08:00 Макросы.
12:36 Goto.
16:20 Указатель void *.
22:17 using namespace std.
27:19 New и Delete.
https://youtu.be/j0_u26Vpb4w
YouTube
Forbidden C++
The unimaginable evil of C++ is unleashed. Be afraid. Global Variables, Macros, Void*, Goto, Namespace STD, New & Delete, all the tools every C++ programmer needs... right?
Patreon: https://www.patreon.com/javidx9
YouTube: https://www.youtube.com/javidx9…
Patreon: https://www.patreon.com/javidx9
YouTube: https://www.youtube.com/javidx9…
#вопросы_с_собеседований
Опишите выделение памяти и их отличия?
• Статическое выделение памяти - выделяется редактором связей и существует, пока выполняется программа;
• Память в стеке - автоматическая память. Выделяется при вызове функции для хранения локальных объектов и очищается автоматически после выхода этих объектов из зоны видимости, то есть после возвращения управления из функции;
• Память в куче - динамическая память. Объекты создаются с помощью оператора new и должны быть уничтожены с помощью вызова оператора delete самим программистом.
Опишите выделение памяти и их отличия?
• Статическое выделение памяти - выделяется редактором связей и существует, пока выполняется программа;
• Память в стеке - автоматическая память. Выделяется при вызове функции для хранения локальных объектов и очищается автоматически после выхода этих объектов из зоны видимости, то есть после возвращения управления из функции;
• Память в куче - динамическая память. Объекты создаются с помощью оператора new и должны быть уничтожены с помощью вызова оператора delete самим программистом.
#вопросы_с_собеседований
Когда Вы должны использовать список инициализации?
Ответ:
1) когда в классе есть ссылки,
2) когда есть константы,
3) когда у базового и выведенного класса есть конструктор с набором аргументов.
Когда Вы должны использовать список инициализации?
Ответ:
2) когда есть константы,
3) когда у базового и выведенного класса есть конструктор с набором аргументов.
Функция any_of
Эта функция проверяет заданный диапазон, если хотя бы один элемент удовлетворяет заданному свойству, указанному в функции. Возвращает true, если хотя бы один элемент удовлетворяет свойству, иначе возвращает false.
В приведенном выше коде -6 делает условие положительным.
Вывод: There exists a negative element
Эта функция проверяет заданный диапазон, если хотя бы один элемент удовлетворяет заданному свойству, указанному в функции. Возвращает true, если хотя бы один элемент удовлетворяет свойству, иначе возвращает false.
В приведенном выше коде -6 делает условие положительным.
Вывод: There exists a negative element
Задача
Для каждого из чисел второй последовательности найдите ближайшее к нему в первой.
В первой строке входных данных содержатся числа N и K (). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2⋅10**9.
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
Для каждого из чисел второй последовательности найдите ближайшее к нему в первой.
В первой строке входных данных содержатся числа N и K (). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2⋅10**9.
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
Сonstexpr
Допустим, у вас есть выражение, значение которого нужно вычислить и которое не будет меняться после этого. Вы можете вычислить значение заранее и использовать его как макрос. Или, как предлагает C++11, вы можете использовать constexpr.
Программисты сокращают время работы программы насколько возможно. Например, некоторые операции перекладываются на компилятор.
Код выше — довольно частый пример использования constexpr.
Так как мы объявили функцию вычисления чисел Фибоначчи как constexpr, компилятор вычислит значение fib(20) во время компиляции. Тогда после компиляции строка const long long bigval = fib(20); будет заменена на const long long bigval = 2432902008176640000.
Допустим, у вас есть выражение, значение которого нужно вычислить и которое не будет меняться после этого. Вы можете вычислить значение заранее и использовать его как макрос. Или, как предлагает C++11, вы можете использовать constexpr.
Программисты сокращают время работы программы насколько возможно. Например, некоторые операции перекладываются на компилятор.
Код выше — довольно частый пример использования constexpr.
Так как мы объявили функцию вычисления чисел Фибоначчи как constexpr, компилятор вычислит значение fib(20) во время компиляции. Тогда после компиляции строка const long long bigval = fib(20); будет заменена на const long long bigval = 2432902008176640000.
Кодогенератор Waffle++ для C++
Кодогенератор это программа, которая на основе исходного кода или какого-нибудь файла настроек генерирует вспомогательный код, который потом компилируется вместе с исходным кодом.
Смотреть статью
Кодогенератор это программа, которая на основе исходного кода или какого-нибудь файла настроек генерирует вспомогательный код, который потом компилируется вместе с исходным кодом.
Смотреть статью
Хабр
Кодогенератор Waffle++ для C++
Список пасхалок: https://clck.ru/33J7ck Кодогенератор это программа, которая на основе исходного кода или какого-нибудь файла настроек генерирует вспомогательный код, который потом компилируется...
#вопросы_с_собеседований
Что выведет код сверху?
Ответ:
Class B
Программа верна, поэтому ошибки не возникает, следовательно, программа выполняется успешно, и b вызывает функцию is func(), поэтому выводится “Класс B”.
Что выведет код сверху?
Ответ:
Программа верна, поэтому ошибки не возникает, следовательно, программа выполняется успешно, и b вызывает функцию is func(), поэтому выводится “Класс B”.