😏 Зачем нужен виртуальный деструктор?
Виртуальные деструктор нужен только когда мы пользуемся наследованием. Он необходим в первую очередь, чтобы не было утечки памяти (memory leaks)
❗Если ключевое слово virtual к деструктору в предке, то и во всех потомках он тоже будет виртуальным
❗ Если есть хотя бы одна виртуальная функция в классе, то деструктор тоже нужно сделать виртуальным
Виртуальные деструктор нужен только когда мы пользуемся наследованием. Он необходим в первую очередь, чтобы не было утечки памяти (memory leaks)
❗Если ключевое слово virtual к деструктору в предке, то и во всех потомках он тоже будет виртуальным
❗ Если есть хотя бы одна виртуальная функция в классе, то деструктор тоже нужно сделать виртуальным
🔮 Статья об constexpr, consteval и constinit
Вышла небольшая обзорная статья о том, как constexpr, consteval, и constinit позволяют реализовывать компиляцию на этапе выполнения. Компиляция на этапе выполнения позволяет ускорить выполнение кода за счет выполнения расчетов на этапе компиляции, а не в рантайме
👉 Ссылка
Вышла небольшая обзорная статья о том, как constexpr, consteval, и constinit позволяют реализовывать компиляцию на этапе выполнения. Компиляция на этапе выполнения позволяет ускорить выполнение кода за счет выполнения расчетов на этапе компиляции, а не в рантайме
👉 Ссылка
-35% на полугодовой курс по алгоритмам!
🌟 Алгоритмы и структуры данных🌟
23 390 рублей35 990 рублей до 1 апреля
Курс для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/5a72cc41
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻
🌟 Алгоритмы и структуры данных🌟
23 390 рублей
Курс для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/5a72cc41
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻
💡 В чем различия между delete и delete[]?
❗ delete уничтожает объекты, которые были созданы при помощи new()
❗ delete[] уничтожает объекты, которые были созданы при помощи new[](). Также будут вызваны деструкторы для всех элементов
‼️ Если операторы использовать не правильно, то будет undefined behavior😜
❗ delete уничтожает объекты, которые были созданы при помощи new()
❗ delete[] уничтожает объекты, которые были созданы при помощи new[](). Также будут вызваны деструкторы для всех элементов
‼️ Если операторы использовать не правильно, то будет undefined behavior😜
Что произойдет, если следующая программа будет выполнена на C и C++?
Anonymous Quiz
8%
Ошибка для C и успешное выполнение для C++
17%
Ошибка как в C, так и в C++
47%
Ошибка в C++ и успешное выполнение в C
27%
Успешный запуск как на C, так и на C++.
⚡️Proglib запускает каналы про нейросети
По каждому направлению отдельно! А именно:
⭐Библиотека нейрозвука — здесь все, связанное с транскрибацией, синтезом речи, ИИ-музыкой
⭐Библиотека нейротекста — классические ИИ-помощники вроде ChatGPT, Gemini, Bing
⭐Библиотека нейровидео — здесь пишем про нашумевшую Sora AI, а также про Runway ML, дипфейки и другие видеотехнологии
⭐Библиотека нейрокартинок — генерируем изображения и рассказываем про Midjourney, DALL-E, Stable Diffusion
⭐️Библиотека робототехники и беспилотников — наконец, тут мы рассказываем не столько про ИИ, сколько про роботов, беспилотные технологии и интернет вещей
И все это — максимально подробно: с пошаговыми инструкциями, промтами, инструментами и лайфхаками.
Подписывайтесь!
По каждому направлению отдельно! А именно:
⭐Библиотека нейрозвука — здесь все, связанное с транскрибацией, синтезом речи, ИИ-музыкой
⭐Библиотека нейротекста — классические ИИ-помощники вроде ChatGPT, Gemini, Bing
⭐Библиотека нейровидео — здесь пишем про нашумевшую Sora AI, а также про Runway ML, дипфейки и другие видеотехнологии
⭐Библиотека нейрокартинок — генерируем изображения и рассказываем про Midjourney, DALL-E, Stable Diffusion
⭐️Библиотека робототехники и беспилотников — наконец, тут мы рассказываем не столько про ИИ, сколько про роботов, беспилотные технологии и интернет вещей
И все это — максимально подробно: с пошаговыми инструкциями, промтами, инструментами и лайфхаками.
Подписывайтесь!
🧨 Spinlock
Spinlock (спин-блокировка, циклическая-блокировка) — по своей сути просто бесконечный цикл с проверкой для выхода. Необходим для синхронизации доступа к общему ресурсу в многопоточных приложениях
❗Spinlock даёт максимальную нагрузку на CPU. Так как по задумке он выполняется очень ограниченное время, то это не заметно
❗ Значительно дешевле mutex
Spinlock (спин-блокировка, циклическая-блокировка) — по своей сути просто бесконечный цикл с проверкой для выхода. Необходим для синхронизации доступа к общему ресурсу в многопоточных приложениях
❗Spinlock даёт максимальную нагрузку на CPU. Так как по задумке он выполняется очень ограниченное время, то это не заметно
❗ Значительно дешевле mutex
Какой из следующих типов поддерживается C++, но не C?
Anonymous Quiz
25%
double
12%
float
1%
int
62%
bool
💡 Можно ли вызвать delete this?
❗Ответ
Да, можно. В основном это делается, если деструктор приватный и другого способа уничтожить объект нет. В остальных же случаях, при двойном вызове delete на одном и том же указателе будет undefined behavior
❗Ответ
🧨 Принципы SOLID
Принципы SOLID — в отличие от шаблонов проектирование GoF это правила, которым удобно следовать при разработке для улучшения структуры кода, облегчения возможности поддержки и развития нового функционала
💡В SOLID входит пять принципов, по одному на каждую букву
- Single Responsibility Principle (Принцип единственной обязанности)
- Open/Closed Principle (Принцип открытости/закрытости)
- Liskov Substitution Principle (Принцип подстановки Лисков)
- Interface Segregation Principle (Принцип разделения интерфейсов)
- Dependency Inversion Principle (Принцип инверсии зависимостей)
#solid
Принципы SOLID — в отличие от шаблонов проектирование GoF это правила, которым удобно следовать при разработке для улучшения структуры кода, облегчения возможности поддержки и развития нового функционала
💡В SOLID входит пять принципов, по одному на каждую букву
- Single Responsibility Principle (Принцип единственной обязанности)
- Open/Closed Principle (Принцип открытости/закрытости)
- Liskov Substitution Principle (Принцип подстановки Лисков)
- Interface Segregation Principle (Принцип разделения интерфейсов)
- Dependency Inversion Principle (Принцип инверсии зависимостей)
#solid
🧨 Принцип единственной обязанности
Принцип единственной обязанности (Single Responsibility Principle) — первый из SOLID принципов
💡 Формулировка
- У вас должна быть только одна причина, чтобы поменять класс
- Основной причиной для изменения класса это появление новых требований. Это ведёт к изменению ответственности
- Следуя этому принципу класс не должен иметь больше одной ответственности. Это уменьшит вероятность нарушения логики приложения
❗Главной идеей данного принципа — это то, что если мы что-то поменяли в одном месте, то мы не хотим чтобы что-то сломалось в другом месте
Принцип единственной обязанности (Single Responsibility Principle) — первый из SOLID принципов
💡 Формулировка
- У вас должна быть только одна причина, чтобы поменять класс
- Основной причиной для изменения класса это появление новых требований. Это ведёт к изменению ответственности
- Следуя этому принципу класс не должен иметь больше одной ответственности. Это уменьшит вероятность нарушения логики приложения
❗Главной идеей данного принципа — это то, что если мы что-то поменяли в одном месте, то мы не хотим чтобы что-то сломалось в другом месте
🧨Что такое align(...)?
align(...) — расширение языка, которая задает выравнивание структуры и её элементов
❗ Число в align задаёт выравнивание в байтах и может принимать значения от 1 до 8192
‼️ Начиная с C++11 появилось ключевое слово alignas, работает также, но в отличие от align входит в стандарт языка
align(...) — расширение языка, которая задает выравнивание структуры и её элементов
❗ Число в align задаёт выравнивание в байтах и может принимать значения от 1 до 8192
‼️ Начиная с C++11 появилось ключевое слово alignas, работает также, но в отличие от align входит в стандарт языка
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🍰 Зачем нужен std::atomic?
std::atomic — это шаблон для реализации атомарных операций
💡Для std::atomic существуют стандартные алиасы
• std::atomic_bool == std::atomic<bool>
• std::atomic_char == std::atomic<char>
• std::atomic_int == std::atomic<int>
• и т. д.
❗Полученный из std::atomic объект можно безопасно использоваться из нескольких потоков, не задумываясь о синхронизации
std::atomic — это шаблон для реализации атомарных операций
💡Для std::atomic существуют стандартные алиасы
• std::atomic_bool == std::atomic<bool>
• std::atomic_char == std::atomic<char>
• std::atomic_int == std::atomic<int>
• и т. д.
❗Полученный из std::atomic объект можно безопасно использоваться из нескольких потоков, не задумываясь о синхронизации
💣 Лучшие книги по C++ для начинающих и продолжающих: ваши рекомендации
❗Мы ищем лучшие книги (ru, en) по C++, которые помогут как начинающим программистам, делающим свои первые шаги в мире программирования, так и продолжающим программистам, желающим углубить свои знания и перейти на следующий уровень мастерства
❗Мы также хотели бы узнать, почему именно эти книги вы бы порекомендовали. Расскажите, чем они выделяются среди других, какие сильные стороны у этих книг, и как они помогли вам в вашем профессиональном развитии. Ваши обоснования помогут другим программистам принять решение о том, какую книгу выбрать для дальнейшего обучения
😏👉 Опросик
❗Мы ищем лучшие книги (ru, en) по C++, которые помогут как начинающим программистам, делающим свои первые шаги в мире программирования, так и продолжающим программистам, желающим углубить свои знания и перейти на следующий уровень мастерства
❗Мы также хотели бы узнать, почему именно эти книги вы бы порекомендовали. Расскажите, чем они выделяются среди других, какие сильные стороны у этих книг, и как они помогли вам в вашем профессиональном развитии. Ваши обоснования помогут другим программистам принять решение о том, какую книгу выбрать для дальнейшего обучения
😏👉 Опросик