⚙️ Классы хранилищ (storage class)
Классы хранилищ — класс определяющий срок службы и область действия своих переменных и функций
В C++ поддерживаются следующие классы хранения: auto, static, register, extern и mutable, thread_local
Однако, ключевое слово register устарело в C++11. В C++17 он был удален и зарезервирован для использования в будущем
Классы хранилищ — класс определяющий срок службы и область действия своих переменных и функций
В C++ поддерживаются следующие классы хранения: auto, static, register, extern и mutable, thread_local
Однако, ключевое слово register устарело в C++11. В C++17 он был удален и зарезервирован для использования в будущем
🔮 Ключевое слово volatile
Ключевое слово volatile сообщает компилятору, что переменная может измениться, и компилятор об этом не узнает. Переменные, объявленные как volatile, не будут кэшироваться компилятором и, следовательно, всегда будут считываться из памяти
Одно из назначений этого ключевого слова — это работать с внешними устройствами, взаимодействие с которыми идёт через память. Проще говоря устройство устройство мапится напрямую в память процесса
Ключевое слово volatile сообщает компилятору, что переменная может измениться, и компилятор об этом не узнает. Переменные, объявленные как volatile, не будут кэшироваться компилятором и, следовательно, всегда будут считываться из памяти
Одно из назначений этого ключевого слова — это работать с внешними устройствами, взаимодействие с которыми идёт через память. Проще говоря устройство устройство мапится напрямую в память процесса
🔮 Ключевые слова final и override
Ключевое слово override заставляет компилятор проверить, что метод virtual и находится в базовом классе. Если не найдёт базовый класс или метод будет иметь другую сигнатуру, то компилятор выдаст ошибку времени компиляции
final — если реализация (дальнейшая) не подразумевается дальнейшего переиспользования (наследования), то final прервёт наследование
Ключевое слово override заставляет компилятор проверить, что метод virtual и находится в базовом классе. Если не найдёт базовый класс или метод будет иметь другую сигнатуру, то компилятор выдаст ошибку времени компиляции
final — если реализация (дальнейшая) не подразумевается дальнейшего переиспользования (наследования), то final прервёт наследование
🔮 Что такое enum class?
• В C++11 на смену стандартному перечислению (enum), пришёл enum class
• Работает также как и просто enum. В качестве предка можно использовать любой целочисленный тип (например int)
• Самое главное отличие от enum, то что enum class и правда является namespace'ом и определения из него не видны снаружи без использования имени самого enum class
• В C++11 на смену стандартному перечислению (enum), пришёл enum class
• Работает также как и просто enum. В качестве предка можно использовать любой целочисленный тип (например int)
• Самое главное отличие от enum, то что enum class и правда является namespace'ом и определения из него не видны снаружи без использования имени самого enum class
🧨 Отличная подборка книг по языкам программирования и технологиям
В книгах всё разбито по темам описывающим наиболее частые вопросы задаваемые при использование языка
👉Ссылка
В книгах всё разбито по темам описывающим наиболее частые вопросы задаваемые при использование языка
👉Ссылка
🔍 Что такое пользовательские суффиксы в C++?
Пользовательские суффиксы — это инструмент в C++, который позволяет определять собственные суффиксы для литералов. В основном используется для улучшения читаемости кода
📝 Особенности
- Вызов данной функций анализируется ещё на этапе анализа исходного кода
- В стандартных библиотеках суффикс может быть любым. Для пользователей только со знаком подчёркивания
Пользовательские суффиксы — это инструмент в C++, который позволяет определять собственные суффиксы для литералов. В основном используется для улучшения читаемости кода
📝 Особенности
- Вызов данной функций анализируется ещё на этапе анализа исходного кода
- В стандартных библиотеках суффикс может быть любым. Для пользователей только со знаком подчёркивания
💡 null pointer
В стандарте до C++11 нулевой указатель было просто определением (define). Главная проблема такого подхода в том что это просто define над int, проще говоря просто int
nullptr — появился в C++11. Это не настоящий указатель, это класс. Его нельзя привести к int. Можно присвоить только указателю
В стандарте до C++11 нулевой указатель было просто определением (define). Главная проблема такого подхода в том что это просто define над int, проще говоря просто int
nullptr — появился в C++11. Это не настоящий указатель, это класс. Его нельзя привести к int. Можно присвоить только указателю
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
🧨 Чем отличаются ссылки от указателей в С++
❗Указатели
• Указатель — это переменная, которая содержит адрес ячейки памяти
• Указатели могут быть нулевыми (nullptr), что означает, что они не указывают ни на какую конкретную область памяти
• Указатели могут быть изменены для указания на другую область памяти
• Указатели могут указывать на массивы элементов
• Указатели могут использоваться для динамического выделения памяти с помощью оператора new и освобождения памяти с помощью оператора delete
❗Ссылки
• Ссылка — это альтернативное имя для существующей переменной
• Ссылка обязательно должна быть инициализирована при объявлении и не может быть изменена, чтобы указывать на другой объект
• Ссылки не могут быть нулевыми, они всегда указывают на существующий объект
• Ссылки не могут указывать на массивы элементов
• Ссылки обычно используются в качестве аргументов функций для передачи данных по ссылке, что позволяет изменять исходные значения переменных
❗Указатели
• Указатель — это переменная, которая содержит адрес ячейки памяти
• Указатели могут быть нулевыми (nullptr), что означает, что они не указывают ни на какую конкретную область памяти
• Указатели могут быть изменены для указания на другую область памяти
• Указатели могут указывать на массивы элементов
• Указатели могут использоваться для динамического выделения памяти с помощью оператора new и освобождения памяти с помощью оператора delete
❗Ссылки
• Ссылка — это альтернативное имя для существующей переменной
• Ссылка обязательно должна быть инициализирована при объявлении и не может быть изменена, чтобы указывать на другой объект
• Ссылки не могут быть нулевыми, они всегда указывают на существующий объект
• Ссылки не могут указывать на массивы элементов
• Ссылки обычно используются в качестве аргументов функций для передачи данных по ссылке, что позволяет изменять исходные значения переменных
🔮 std::bitset
Шаблонный класс std::bitset предназначен для управления наборами битов, обеспечивая удобные методы для их установки, сброса и получения. Основная польза от него в том, что в нём можно компактно хранить булевы значения, не тратя на это целый байт, как при использовании обычного bool
Шаблонный класс std::bitset предназначен для управления наборами битов, обеспечивая удобные методы для их установки, сброса и получения. Основная польза от него в том, что в нём можно компактно хранить булевы значения, не тратя на это целый байт, как при использовании обычного bool
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
🔍 Что такое std::filesystem?
std::filesystem — одной из самых полезных библиотек в C++, добавленной в стандартную библиотеку начиная с C++17. Это библиотека, предоставляющая мощные инструменты для работы с файловой системой. С ее помощью вы можно создавать, копировать, перемещать и удалять файлы и директории
Создание директории
- std::filesystem::create_directories(path)
Удаление директории
- std::filesystem::remove(path) — пустой директории
- std::filesystem::remove_all(path) — директории вместе с файлами
Копирование
- std::filesystem::copy(path_from, path_to)
👉Документация
std::filesystem — одной из самых полезных библиотек в C++, добавленной в стандартную библиотеку начиная с C++17. Это библиотека, предоставляющая мощные инструменты для работы с файловой системой. С ее помощью вы можно создавать, копировать, перемещать и удалять файлы и директории
Создание директории
- std::filesystem::create_directories(path)
Удаление директории
- std::filesystem::remove(path) — пустой директории
- std::filesystem::remove_all(path) — директории вместе с файлами
Копирование
- std::filesystem::copy(path_from, path_to)
👉Документация
⚙️ Почему нужно использовать extern «C» в коде?
Ключевое слово extern «C» используется для указания компилятору C++ на использование соглашения о вызовах функций, аналогичного тому, что используется в языке C. Это необходимо, потому что ABI (Application Binary Interface) C++ отличается от ABI C
Ключевое слово extern «C» сообщает компилятору C++, что функции, объявленные внутри этого блока, должны использовать соглашение о вызове, аналогичное C. Это гарантирует, что компилятор C++ не будет применять к ним особенности C++ ABI, и они будут корректно вызываться из C++ кода
Ключевое слово extern «C» используется для указания компилятору C++ на использование соглашения о вызовах функций, аналогичного тому, что используется в языке C. Это необходимо, потому что ABI (Application Binary Interface) C++ отличается от ABI C
Ключевое слово extern «C» сообщает компилятору C++, что функции, объявленные внутри этого блока, должны использовать соглашение о вызове, аналогичное C. Это гарантирует, что компилятор C++ не будет применять к ним особенности C++ ABI, и они будут корректно вызываться из C++ кода
⚙️ Зачем нужен std:string_view?
std::string_view — легковесный способ работы с неизменяемыми последовательностями символов, представленными строками, без копирования их данных
std::string_view — это просто пара значений, указатель на последовательность и размер
❗Так как std::string_view не является владельцем данных, то если строка исчезнет, то никто не информирует, что std::string_view перестал быть валидным
‼️ Основная идея — это дёшево хранить и передавать строки
std::string_view — легковесный способ работы с неизменяемыми последовательностями символов, представленными строками, без копирования их данных
std::string_view — это просто пара значений, указатель на последовательность и размер
❗Так как std::string_view не является владельцем данных, то если строка исчезнет, то никто не информирует, что std::string_view перестал быть валидным
‼️ Основная идея — это дёшево хранить и передавать строки