C/C++ Ready | Программирование
12.2K subscribers
713 photos
42 videos
339 links
Авторский канал по разработке на C и C++.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/cpp_ready
加入频道
👩‍💻 RAII: Основа безопасного управления ресурсами

RAII — это идиома C++, которая связывает жизненный цикл ресурса с объектом, владеющим этим ресурсом.

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

🔥 — если узнал новое
🤝 если уже пользовался

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50🤝19👍8
Please open Telegram to view this post
VIEW IN TELEGRAM
👍69🔥20😁1
👩‍💻 Магия ключевого слова constexpr

C++ 11 познакомил нас с constexpr, а с приходом C++ 14 и 17 это слово стало ещё более гибким и могущественным.

Но многие до сих пор недооценивают его силу, а зря! Попробуем разобраться, как constexpr может изменить твой код к лучшему.

Итак, представь себе простую задачу: тебе нужно вычислить факториал числа, и ты хочешь, чтобы компилятор это сделал на этапе компиляции (кто же хочет ждать вычислений в рантайме, если это можно избежать?). Вот решение без constexpr:
int factorial(int n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
int result = factorial(5); // вычисляется на этапе выполнения


Теперь с constexpr:
constexpr int factorial(int n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
constexpr int result = factorial(5); // вычисляется на этапе компиляции


Компилятор вычисляет factorial(5) ещё до запуска программы, что ускоряет код и снижает нагрузку в рантайме, но есть пара нюансов:

• Чистота функций: constexpr функции должны быть "чистыми" — не менять глобальные данные и быть полностью детерминированными.

• Решение компилятора: компилятор может выполнить вычисление в constexpr, но не обязан. Если не удастся, он выполнит его в рантайме.

Так что в использовании constexpr есть свои тонкости, но при правильном подходе это просто находка для оптимизации. Делитесь своим мнением в комментариях и если было полезно, ставь реакцию под постом!

📣 C++ Ready | #техсобес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍13🤝31
📖 С++ Шаг за шагом

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

Автор: Шилдт Герберт
Год: 2013


⬇️ Скачать книгу

📣 C++ Ready | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥7🤝3👎2
👩‍💻 Интерфейсы и абстрактные классы: проектирование гибкой архитектуры

Интерфейсы и абстрактные классы в C++ позволяют создавать гибкие и масштабируемые архитектуры, отделяя реализацию от интерфейса.

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

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22🤝15👍5👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Poac — это менеджер пакетов и система сборки для пользователей C++, вдохновленная Cargo для Rust. Poac разработан как структурно-ориентированная система сборки, что означает, что, если вы следуете заданной структуре проекта Poac, вам почти не нужно конфигурировать проект, в отличие от CMake.

📌 Ссылочка: https://poac.dev/

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍4🤝4
👩‍💻 Шаблон проектирования Singleton в C++ — управление уникальными экземплярами

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

Используя простой код, можно реализовать этот шаблон, чтобы сделать свой код более организованным и эффективным!

🔥 — если узнал новое
🤝 если уже пользовался

📣 C++ Ready | #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33🤝10👍8
Что будет в консоли?
Anonymous Quiz
51%
A
8%
B
16%
C
25%
D
👩‍💻 Шпаргалка по методам работы с контейнерами STL в C++

Контейнеры STL в C++ — это структуры данных, такие как vector, list, map, и set, которые позволяют эффективно хранить и управлять коллекциями элементов, предоставляя удобные методы для работы с ними.

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥9🤝3
🖥 Берегись неявного преобразования типов в C++

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

Рассмотрим пример:
void printStatus(bool status) {
if (status) {
std::cout << "Success\n";
} else {
std::cout << "Failure\n";
}
}
printStatus(5); // компилируется, но ожидаем ли мы это?


Код не вызовет ошибок компиляции, хотя функция ожидает тип bool, а передано целое число 5. Компилятор автоматически преобразует 5 в true. Таким образом у нас в коде может скрываться логическая ошибка, чего нужно избегать

Где можно потеряться?

1 — При перезагрузке функции преобразование типов может вызывать неоднозначности:
void func(int x);
void func(double x);
func(2.5f); // Какую функцию вызвать?


Компилятор может привести 2.5f к double или int. В зависимости от компилятора и флагов могут возникать неожиданные результаты.

2 — Конструкторы без explicit: Конструкторы, которые можно вызвать одним параметром, поддерживают неявное преобразование:
class Product {
public:
Product(int price) { }
};
void buy(const Product& p);
buy(99); // автоматически создается объект Product(99)


Такое поведение может привести к неожиданным последствиям. Чтобы избежать этого, стоит объявлять конструкторы с explicit:
explicit Product(int price) { }


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

Жми 🔥 если понравился пост

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍14🤝5👎1
📖 С / C++ в задачах и примерах

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

Автор: Никита Культин
Год: 2019


⬇️ Скачать книгу

📣 C++ Ready | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥8👎1
🖥 Указатели на функции

В этом посте разобрали основы работы с указателями на функции, позволяя гибко управлять вызовами:

• Объявление указателя на функцию
• Передача указателя как параметра
• Переключение функций через указатель


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

🔥 — если узнал новое
🤝 если уже пользовался

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44🤝27👍6👎1