C++ Эволюция
2.72K subscribers
296 photos
2 videos
106 links
Обучающий канал по C++
Download Telegram
Устроиться аналитиком в Яндекс за выходные

6–9 июля проводим Weekend Offer Analytics. До 3 июля оставьте заявку на участие, 6–8 июля пройдите технические собеседования, а 9 июля познакомьтесь с командами и получите офер.

В мероприятии участвует 9 команд: Crowd, Карты, Поиск, Алиса, R&D, Автономный транспорт, Подразделение аналитики, Антифрод, Антиробот. Вы сможете пообщаться с менеджерами и выбрать проект, который покажется самым интересным.

Нанимаем в офисы России и Республики Беларусь.

Узнать подробности и зарегистрироваться можно здесь.
Разбираем как решать задачи на LeetCode

Примеры решений
Пояснения

Выбери своё направление:

1. JavaScript
2. Python
3. Java
4. C#
5. C/C++
6. Golang
7. PHP
8. Kotlin
9. Swift
➡️ Арифметика указателей

Использование указателей при написании кода чревато появлением огромного количества ошибок.

По этой причине программисты на С++ стараются их избегать. Альтернативой могут послужить числовые литералы.

C++ Learning 👩‍💻
➡️ Ассоциативность оператора массива

A[8] - это то же самое, что и *(A + 8). Так как операция сложения ассоциативна, она может быть переписана как *(8 + A), что синонимично ..... 8[A]

Никто не говорил, что это должно быть обязательно полезно

C++ Learning 👩‍💻
➡️ Арифметика указателей

Использование указателей при написании кода чревато появлением огромного количества ошибок.

По этой причине программисты на С++ стараются их избегать. Альтернативой могут послужить числовые литералы.

C++ Learning 👩‍💻
Привет! Меня зовут Бекхан, мне 28 лет. Узнайте обо мне больше, открыв картинку над постом или прочитав полный текст здесь.

Сейчас я занимаюсь разработкой собственной игры с нуля и сталкиваюсь с различными вызовами и подводными камнями. Все свои знания и опыт я конспектирую и делюсь ими на своем сайте и телеграм-канале.

Я всегда стараюсь глубоко и основательно разбираться в возникающих вопросах, и мне кажется, что это будет полезно и для вас.

Хотя постов в моем телеграм-канале пока не так много, я уверен, что с увеличением аудитории у меня будет больше мотивации делиться своим опытом и писать новые посты.

Подписывайтесь на мой телеграм-канал Bekhan Code, чтобы не пропустить полезные советы и инсайты по разработке игр.

Попасть в Bekhan Code
➡️ Унарный оператор +

Мало кто знает о возможностях унарного оператора + в C++. Он может использоваться для:

Перевода Enumeration в integer:

+AnEnumeratorValue


Это делает значение перечислителя типом integer, что полезно при перегрузке операторов для перечислений.

Получения значения переменной:

Унарный + позволяет использовать классы со встроенными статическими инициализаторами без внешнего объявления, создавая временный класс, не зависящий от типа.

Разложение массива на указатели. Вам необходимо передать два указателя какой-либо функции, однако вы наперед знаете, что ничего из этого не выйдет? В этом случае вам очень пригодится оператор

C++ Learning 👩‍💻
➡️ Злой друг программиста: переопределение ключевых слов

Переопределение ключевых слов — плохая практика программирования, но это возможно через препроцессор. Это может вводить баги, например, #define true false или #define else.

#define int float
#define float char


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

#define public private
#include "mylibrary.h"
#undef private


Это позволяет управлять доступом к библиотеке без её изменения, но требует осторожности.

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

C++ Learning
👩‍💻
Приходите на C++ Zero Cost Conf

📍 27 июля в Москве и Ереване пройдет прикладная конференция С++ Zero Cost Conf 2024.

Практикующие эксперты из крупнейших компаний выступят с докладами, поделятся реальными кейсами и метриками:

🔴 Антон Полухин, руководитель группы разработки общих компонент в Яндекс Go. Обсудит новости со встречи Международного комитета по стандартизации языка С++ в Сент-Луисе и расскажет о планах на C++26 и C++29

🔴 Константин Владимиров, руководитель отдела компиляторов и средств разработки в Syntacore. Расскажет об интересных C++-решениях в генераторе llvm-snippy

🔴 Юрий Минаев, архитектор C++-анализатора в PVS-Studio. Поговорит о семантике C++ и покажет, как устроены таблица символов, внутреннее представление типов и поиск имён

🔴 Василий Куликов, ведущий разработчик в Яндексе. Рассмотрит на примере мьютекса основные проблемы реализации примитивов синхронизации во фреймворке userver

🔴 Алексей Веселовский, Senior-C++-разработчик в Align Technology. Поделится свежим докладом о сани...
➡️ Размещающий new

Размещающий new - это альтернативный синтаксис для оператора new, который размещает объект в уже выделенной памяти. Он используется для настройки vtable и вызова конструктора.

Размещающий new полезен для написания кастомных аллокаторов, оптимизирующих производительность. Он позволяет выделить большой блок памяти и последовательно размещать объекты без пробелов, что уменьшает фрагментацию памяти и снижает накладные расходы.

C++ Learning 👩‍💻
➡️ Ответвление с использованием декларации переменной

C++ включает синтаксическое сокращение для одновременного объявления переменной и разветвления по её значению.

Это выглядит как декларация переменной внутри условия оператора if или while, и одновременное присваивание ей значения.

C++ Learning 👩‍💻
🔥 Освой разработку ПО на 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 👩‍💻