C++ Эволюция
2.72K subscribers
296 photos
2 videos
106 links
Обучающий канал по C++
Download Telegram
🔥 Освой разработку ПО на QT и ОС Аврора

Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.

👉 ПРОЙТИ ТЕСТ: https://clck.ru/3BhEZf

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
➡️ Квалификаторы ссылки в методах

C++11 позволяет перегружать методы с использованием квалификатора ссылки, который находится в той же позиции, что и cv-квалификаторы (const и volatile квалификаторы).

Это влияет на то, какой метод будет вызван для объекта, в зависимости от типа this, – является ли он lvalue или же rvalue.

C++ Learning 👩‍💻
➡️ Static methods on instances

C++ позволяет вызывать статические методы из экземпляра таким же образом, как и из класса.

Это позволяет изменять нестатические методы экземпляра на статические без необходимости обновления записи вызова функции.

C++ Learning 👩‍💻
Что будет выведено при выполнении кода?

C++ Learning
👩‍💻
🌎Программист, говори с миром на одном языке!

👉Узнайте больше о возможностях С на бесплатном вебинаре онлайн-курса «Программист С» — «Unicode в С»: регистрация

На вебинаре мы:
— подробнее познакомимся с интернациональным стандартом символов Unicode и низкоуровневым устройством его кодировок
— развеем несколько популярных мифов в области кодировок и посмотрим на инструменты языка C для работы с юникодом.

Занятие будет полезно всем программистам с опытом.

👉После вебинара вы сможете продолжить обучение на курсе по спеццене, в том числе, в рассрочку

erid: LjN8KAAuV
➡️ Перегрузка ++ и --

В C++ имя функции пользовательских операторов — это сам символ оператора.
Унарные и бинарные операторы (- и -) различаются по количеству аргументов.
Унарные операторы инкремента и декремента (++, --) имеют одинаковую сигнатуру.
Для различия постфиксных операторов ++ и -- используется фиктивный аргумент int.
Постфиксные операторы ++ и -- принимают фиктивный аргумент int как флаг для компилятора.

C++ Learning 👩‍💻
🚀Успейте за ростом рынка IoT!

👉Узнайте больше об internet of things на бесплатном вебинаре онлайн-курса «IoT Developer» - «Учет энергоресурсов в платформе ThingsBoard»: регистрация

На занятии рассмотрим решение учета энергоресурсов (вода, газ, э/э, тепло), познакомимся с реализацией демо проекта на платформе ThingsBoard:
1. Подключение устройств
2. Создание сущностей
3. Разработка цепочек правил
4. Разработка дашборда

🤝Понравится урок — продолжите обучение на курсе по спеццене и даже в рассрочку!

erid: LjN8KXW8x
➡️ Функции в качестве параметра шаблона

Параметром шаблона могут быть конкретные целые числа.

Параметром шаблона также могут быть конкретные функции.

Это позволяет компилятору встраивать вызовы для этих функций в коде инстанцированного шаблона для более эффективного выполнения.

В примере ниже, функция memoize() в качестве шаблонного параметра получает функцию и вызывает эту функцию для новых значений аргумента.

Старое сохранённое значение аргумента берётся из кеша.

C++ Learning 👩‍💻
Хотите узнать, какой алгоритм сортировки быстрее и эффективнее? Присоединяйтесь к нашему открытому уроку!

Тема: Визуальное сравнение 4-5 алгоритмов сортировок.
Дата: 15 июля в 20:00 мск.

На занятии мы подробно рассмотрим два популярных алгоритма сортировки: Выбором и Пирамидальной. Разберём их по различным критериям, включая сложность, количество обменов, стабильность и адаптивность.

Мы напишем и сравним алгоритмы по их быстродействию. Этот урок идеально подходит для студентов, разработчиков и всех, кто хочет углубить свои знания в области алгоритмов сортировки.

🔥 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.

🔴 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://otus.ru/lessons/algorithm/?utm_source=telegram&utm_campaign=algo&utm_medium=cpm&utm_term=learning_pluses&utm_content=lesson_15-07-2024_usp-algo_algo_aitext_no-headline_aida_long_aibanner_lesson-ba...
➡️ Шаблонный параметр типа

Параметры типа могут иметь и свои параметр типа. Это позволяет при инстанцировании передавать шаблонные классы без указания параметров типа шаблона.

Рассмотрим пример:

template<typename T>
struct Cache { ... };

template<typename T>
struct NetworkStore { ... };

template<typename T>
struct MemoryStore { ... };

template<typename Store, typename T>
struct CachedStore
{
Store store;
Cache<T> cache;
};

CachedStore<NetworkStore<int>, int> a;
CachedStore<MemoryStore<int>, int> b;


Структура CachedStore содержит cache и store одного типа данных. Однако при создании CachedStore нужно дважды указывать тип данных (например, int), что не гарантирует их согласованности. Хотелось бы указывать тип данных единожды, чтобы избежать несоответствия, но если опустить параметр типа для store, компилятор выдаст ошибку:

// Этот код не компилируется, потому что у NetworkStore и MemoryStore
// отсутствуют параметры типа
CachedStore<
...
➡️ Функциональные блоки try

Функциональные блоки try существуют для ловли исключений выброшенных при выполнении инициализационного списка конструктора.

Блок вокруг списка инициализации нельзя обернуть обычным блоком try-catch, потому что список существует вне тела функции. Чтобы исправить это, C++ позволяет использовать try-catch блок в качестве тела метода.

Довольно странный синтаксис, и он может использоваться не только в конструкторах, но и в определении любых функций.

C++ Learning 👩‍💻
🎯 Готовы открыть для себя мир мобильной разработки на ОС Аврора 5?

16 июля в 20:00 мск присоединяйтесь к нашему открытому уроку и узнайте все секреты!

ОС Аврора 5 — это передовая российская мобильная операционная система, готовая к использованию в самых амбициозных проектах. Хотите узнать, как её покорить? Тогда этот вебинар для вас!

На занятии мы познакомимся с ключевыми особенностями ОС Аврора 5 и погрузимся в её уникальную среду разработки приложений — Аврора IDE. Ознакомимся со структурой и конфигурацией приложений на этой платформе.

Вы увидите наглядную демонстрацию приложения, которое отправляет уведомления в графическую подсистему Lipstick.

Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора».
Все участники вебинара получат специальную цену на обучение!

➡️ Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://clck.ru/3BpWFY

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
➡️ WebKit

Так или иначе, почти все разработчики на разных этапах сталкиваются с необходимостью отображать web – элементы. Чтобы всё выглядело красиво и в коде, и в конечном отображении, а выполнение этой задачи не отнимало слишком много времени и сил, существует библиотека WebKit.

Некоторые программисты называют WebKit «чёрным ящиком», органично перерабатывающим html, css и JavaScript в полноценные веб-страницы.

🔗
Ссылочка на доку

C++ Learning 👩‍💻
Что будет выведено при выполнении кода?

C++ Learning
👩‍💻
➡️ Awesomium

Awesomium — это библиотека для интеграции браузера (на базе Chromium) в своё приложение. Библиотека имеет 2 режима работы: Offscreen и Windowed.

В режиме Offscreen отрисовка и работа скриптов на экране не отображается.

В режиме Windowed средствами библиотеки эффективно выполняется отрисовка в «окне приписки» и обработка активности мыши и клавиатуры.

Awesomium активно применяется в десятках разных приложений. Описаны случаи интеграции этой библиотеки в 3D игры.

🔗
Ссылочка на доку

C++ Learning 👩‍💻
Для программистов важно понимать устройство и организацию оперативной памяти — от этого зависит надёжность и производительность кода. Особенно критично это для тех, кто пишет на C, где есть уйма возможностей для ручного управления памятью: malloc, jemalloc, tcmalloc, mimalloc...

👉Узнайте больше на бесплатном авторском вебинаре Дмитрия Кириллова «Написание расширения PostgreSQL на языке С»: регистрация

На уроке узнаете:
- как устроена оперативная память на уровне операционной системы
- что происходит при динамическом распределении памяти (и зачем нужны специализированные аллокаторы)
- как грамотно управлять памятью, чтобы повысить качество своего кода

🤝Понравится вебинар — продолжите обучение на онлайн-курсе «Программист С» по специальной цене!

erid: LjN8JtvKc
➡️ V8

Если вам нужен удобный инструмент для работы с JavaScript, V8 отлично подойдёт.

V8 использует классы на C++ в namespace V8, что позволяет работать с JavaScript через привычную оболочку C++. Объекты C++ и V8 взаимодействуют через v8::Handle (template-классы).

Установка V8 занимает немного времени и очень полезна для работы с JavaScript. Кроме того, знания о библиотеках, связывающих C++ и JavaScript, часто спрашивают на собеседованиях, поэтому стоит с ними познакомиться даже если вы не планируете работать с JavaScript.

C++ Learning 👩‍💻
➡️ Check

Библиотека Check предназначена для модульного тестирования всех возможностей программ, написанных на языке С.

Существенным плюсом использования Check’а служит возможность запуска тестов в отдельных процессах для более точной диагностики причин возникновения ошибок, снижения скорости и т.п

Для модульного тестирования на языке С++ используется Google C++ Testing Framework (Google Test).

🔗
Ссылочка на доку

C++ Learning 👩‍💻
➡️ ZBar

Библиотека ZBar предназначена для распознавания штрихкодов из изображений.

ZBar имеет предельно простую и логичную документацию без «тёмной магии» и необъяснимых функций.

Работать с ней легко и удобно. Можно использовать из программных интерфейсов С, С++, Питона и других языков программирования.

🔗
Ссылочка на доку

C++ Learning 👩‍💻