«Прозрачный промоушн выгоден и разработчику, и его тимлиду». Нюансы карьеры разработчика на С++
https://habr.com/ru/companies/kaspersky/articles/729620/
https://habr.com/ru/companies/kaspersky/articles/729620/
Хабр
«Прозрачный промоушн выгоден и разработчику, и его тимлиду». Нюансы карьеры разработчика на С++
На прошлой неделе мы в «Лаборатории Касперского» провели онлайновый митап «Нюансы карьеры разработчика на С++». Представители разных команд С++ посмотрели на карьерный трек «плюсера» как со стороны...
Макросы и функции
При первом знакомстве макросы могут показаться обычными вызовами функций. Конечно, у них немного странный синтаксис, но они «ведут себя» как обычные функции. Тогда в чём разница?
Макрос можно условно назвать функцией обработки и замены программного кода: после сборки программы макросы заменяются макроопределениями. На картинке показан код на Си.
При первом знакомстве макросы могут показаться обычными вызовами функций. Конечно, у них немного странный синтаксис, но они «ведут себя» как обычные функции. Тогда в чём разница?
Макрос можно условно назвать функцией обработки и замены программного кода: после сборки программы макросы заменяются макроопределениями. На картинке показан код на Си.
#вопросы_с_собеседований
Бывает такое, что оператор new не выделяет память?
Ответ:
Да, бывает, когда new передаётся указатель на уже выделенную память (например, с помощью malloc). Это называется placement new. И оператор new без изменения возвращает второй параметр - указатель (void* operator new(std::size_t, void*)). Это используется для создания объектов в выделенном "хранилище" или после malloc.
Важно! В этом случае деструктор нужно вызывать самостоятельно!
Бывает такое, что оператор new не выделяет память?
Ответ:
Важно! В этом случае деструктор нужно вызывать самостоятельно!
Telegram бот на ESP32 для удаленного мониторинга и управления насосной станцией.
https://habr.com/ru/articles/729246/
https://habr.com/ru/articles/729246/
Хабр
Telegram бот на ESP32 для удаленного мониторинга и управления насосной станцией
Предисловие История создания данного девайса следующая: есть очистная станция, в которой шкафы управления насосами и компрессорами на ПЛК Schneider Electric. При отключении городской электросети и...
Пишем простые крестики-нолики на C++
В этой статье напишем классические крестики-нолики на двух игроков. Так как в каждой такой статье мы должны учиться чему-то новому, то на этот раз познакомимся с тернарными операторами и сразу же применим их на практике. Как всегда в конце будет ряд идей по тому, как можно улучшить игру.
Смотреть статью
В этой статье напишем классические крестики-нолики на двух игроков. Так как в каждой такой статье мы должны учиться чему-то новому, то на этот раз познакомимся с тернарными операторами и сразу же применим их на практике. Как всегда в конце будет ряд идей по тому, как можно улучшить игру.
Смотреть статью
Telegraph
Пишем простые крестики-нолики на C++
Продолжаю небольшой цикл статей про простые проекты, которые будут полезны новичкам. В прошлый раз мы написали BlackJack в упрощенном виде, а в этой статье напишем классические крестики-нолики на двух игроков. Так как в каждой такой статье мы должны учиться…
#вопросы_с_собеседований
Что такое rvalue, lvalue?
lvalue - это всё, что имеет имя, rvalue - это то, что имени не имеет. Исторически сложились такие названия, потому что lvalue всегда было то, что писалось с левой стороны присваивающего выражения, а rvalue - это то, что появлялось только справа от этого выражения.
Что такое rvalue, lvalue?
lvalue - это всё, что имеет имя, rvalue - это то, что имени не имеет. Исторически сложились такие названия, потому что lvalue всегда было то, что писалось с левой стороны присваивающего выражения, а rvalue - это то, что появлялось только справа от этого выражения.
Wt
Wt — это фреймворк веб-приложений, который позволяет разработчикам создавать веб-приложения с использованием C++. Его встроенные виджеты и компоненты позволяют легко создавать сложные веб-приложения с минимальными усилиями.
Кроме того, Wt предоставляет модель событий на стороне сервера, которая позволяет разработчикам писать веб-приложения, обладающие высокой отзывчивостью и интерактивностью.
https://www.webtoolkit.eu/wt
Wt — это фреймворк веб-приложений, который позволяет разработчикам создавать веб-приложения с использованием C++. Его встроенные виджеты и компоненты позволяют легко создавать сложные веб-приложения с минимальными усилиями.
Кроме того, Wt предоставляет модель событий на стороне сервера, которая позволяет разработчикам писать веб-приложения, обладающие высокой отзывчивостью и интерактивностью.
https://www.webtoolkit.eu/wt
www.webtoolkit.eu
Wt, C++ Web Toolkit — Emweb
Emweb provides complete solutions for web-based user interfaces using our popular open source library Wt.
#вопросы_с_собеседований
В чем различия между dynamic_cast и reinterpret_cast?
Правильный ответ может звучать так:
Динамическое приведение - это безопасное приведение по иерархии наследования, в том числе и для виртуального наследования. Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL.
При reinterpret_cast результат не гарантирован, проверки не осуществляются.
Ограничения на expression_from: порядковый тип (логический, символьный, целый, перечисляемый), указатель, ссылка.
Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка.
В чем различия между dynamic_cast и reinterpret_cast?
Правильный ответ может звучать так:
Динамическое приведение - это безопасное приведение по иерархии наследования, в том числе и для виртуального наследования. Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL.
При reinterpret_cast результат не гарантирован, проверки не осуществляются.
Ограничения на expression_from: порядковый тип (логический, символьный, целый, перечисляемый), указатель, ссылка.
Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка.
Что произойдет в результате выполнения этого кода?
Anonymous Quiz
6%
Ошибка на этапе компиляции
5%
0 1 2 Bye
11%
0 1 Bye
3%
Ошибка на этапе выполнения
75%
Это вечный цикл
Ключевое слово typedef
Это ключевое слово, которое создает псевдоним для существующего типа данных.
По соглашению имена typedef объявляются с использованием суффикса "_t".
Это помогает указать, что идентификатор представляет собой тип, а не переменную или функцию, а также помогает предотвратить конфликты имен с другими типами идентификаторов.
Это ключевое слово, которое создает псевдоним для существующего типа данных.
По соглашению имена typedef объявляются с использованием суффикса "_t".
Это помогает указать, что идентификатор представляет собой тип, а не переменную или функцию, а также помогает предотвратить конфликты имен с другими типами идентификаторов.
assert()
assert() - макроопределение для вывода отладочных диагностических сообщений. Используется для включения в программу диагностических операторов и принимает один аргумент (int expression).
Аpгyмент expression должен быть выражением, которое принимает значение истина (не ноль), если программа работает так, как вы предполагаете.
Когда expression ложно (ноль), assert вызывает abort, предварительно выведя сообщение, показывающие, какая и где произошла ошибка:
assertion failed: expression, file filename, line lineno
assert() - макроопределение для вывода отладочных диагностических сообщений. Используется для включения в программу диагностических операторов и принимает один аргумент (int expression).
Аpгyмент expression должен быть выражением, которое принимает значение истина (не ноль), если программа работает так, как вы предполагаете.
Когда expression ложно (ноль), assert вызывает abort, предварительно выведя сообщение, показывающие, какая и где произошла ошибка:
assertion failed: expression, file filename, line lineno
#вопросы_с_собеседований
Напишите алгоритм обхода графа в глубину.
Результатом должен стать код, который представляет из себя алгоритм обхода графа в глубину (DFS - Depth First Search). Пример представлен на изображении.
Напишите алгоритм обхода графа в глубину.
Результатом должен стать код, который представляет из себя алгоритм обхода графа в глубину (DFS - Depth First Search). Пример представлен на изображении.
Почему код выше выводит числа, а не символы?
Anonymous Quiz
21%
Нет перегрузки basic_ostream принимающей тип chat.
25%
Код ведет себя верно, ведь в массив записаны числа типа int.
54%
Поведение определено перегрузкой operator<< принимающего char.