Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 2 months, 3 weeks ago
Новые и перспективные Web3 игры с добычей токенов.
Чат: https://t.me/Crypto_Wolf_Chat
Правила чата смотрите в описании чата.
Все свои вопросы направляйте в чат или главному модератору чата: @Exudna_118
По теме сотрудничества: @Zombini
Last updated 2 months, 1 week ago
Что за ошибка в приведенном ниже коде и как ее исправить?
Последним аргументом memset должен быть sizeof(*bar)
, а не sizeof(bar). sizeof(bar)
вычисляет размер bar
(то есть самого указателя), а не размер структуры, на которую указывает bar. Поэтому код можно исправить, используя sizeof(*bar)
в качестве последнего аргумента вызова memset
.
➡️ @cpp_geek
В чем проблема следующего фрагмента?
Из спецификации (C++11 §5.3.5/3):
Если статический тип подлежащего удалению объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа подлежащего удалению объекта и иметь виртуальный деструктор или поведение undefined
.
➡️ @cpp_geek
PIMPL (Pointer to Implementation)
PIMPL — это паттерн программирования, который позволяет скрыть внутреннюю реализацию класса от клиента, а также упростить перекомпиляцию кода и улучшить производительность.
Суть PIMPL-паттерна заключается в том, что все данные хранятся в отдельном класс, а в основном хранится только указатель на этот вспомогательный класс, в котором осуществляется вся работа с данными.
В данном примере пользователь класса MyObject не видит внутреннюю реализацию объекта, что позволяет добавлять/удалять поля без необходимости изменять интерфейс класса. Работа с внутренними данными осуществляется через методы класса Impl, которые вызываются в функциях-членах класса MyObject.
➡️ @cpp_geek
В чем различия между dynamic_cast и reinterpret_cast?
Правильный ответ может звучать так:
Динамическое приведение — это безопасное приведение по иерархии наследования, в том числе и для виртуального наследования. Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL.
При reinterpret_cast результат не гарантирован, проверки не осуществляются.
Ограничения на expression_from: порядковый тип (логический, символьный, целый, перечисляемый), указатель, ссылка.
Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка.
➡️ @cpp_geek
В чем отличие overload и override?
Ответ:
overload - это перегрузка, два одинаковых имени функций с разными принимаемыми аргументами, override - это переопределение (с помощью таблицы виртуальных функций), изменение поведения функции в выведенном классе ( с помощью механизма виртуальных функций).
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 2 months, 3 weeks ago
Новые и перспективные Web3 игры с добычей токенов.
Чат: https://t.me/Crypto_Wolf_Chat
Правила чата смотрите в описании чата.
Все свои вопросы направляйте в чат или главному модератору чата: @Exudna_118
По теме сотрудничества: @Zombini
Last updated 2 months, 1 week ago