ГГрокаем C++

Грокаем C++

@grokaemcpp💻 Технологии🇷🇺 Русский📅 март 2026 г.

Два сеньора C++ - Владимир и Денис - отныне ваши гиды в этом дремучем мире плюсов. По всем вопросам (+ реклама) @ninjatelegramm Менеджер: @Spiral_Yuri Реклама: https://telega.in/c/grokaemcpp Мы на TGstat: https://tgstat.ru/channel/@grokaemcpp/stat

📊 Полная статистика📝 Все посты
##опытным#39#cppcore#pragma#новичкам#092#compiler#template
9.3K
Подписчики
2.8K
Ср. охват
30.4%
Вовлечённость
20
Постов
~0.7
В день

Графики

📊 Средний охват постов

📉 ERR % по дням

📋 Публикации по дням

📎 Типы контента

Лучшие публикации

20 из 20
Ggrokaemcpp
grokaemcpp
6 мар., 10:00

​​Бросаем дичь #новичкам В С++ есть исключения. Вы можете их любить или ненавидеть, но от этого не сбежать(почти). Обычно как происходит. Есть стандартный std::exception или любой кастомный базовый класс исключения my_exception::BaseException. У них куча наследников и вот вы их бросаете в подходящих ситуациях. Но это же С++: "Вы думали, что бросать можно только исключения? Пфф. Не смешите мои подковы и подержите мое пиво." Бросать можно почти все, что угодно, что можно считать объектом. Например...

👁 4.1K
Ggrokaemcpp
grokaemcpp
4 мар., 13:00

​​Доступ к приватным членам. Явная инстанциация и друзья #опытным Оказывается способов легально залезть в непубличные кишки вашего класса довольно много, и сегодня обсудим еще один метод. Мы уже с вами говорили про дружественные функции и что им дозволено получать доступ к приватным членами класса. Но давайте посмотрим на следующий пример: template <typename T> struct Foo { friend void bar() { cout << "Got it!" << endl; } }; void bar(); template struct Foo<int>; bar(); У нас есть шаблонная струк...

👁 3.8K
Ggrokaemcpp
grokaemcpp
25 февр., 11:00

​​CRTP + friend #опытным Допустим, вам нужно написать tcp и udp версии клиента для одной и той же задачи. Можно использовать динамический полиморфизм и переопределить все специфические методы. Но тогда у нас будет оверхед на динамическую диспетчеризацию вызова. Зачем тратить драгоценные миллинаносекунды, если можно воспользоваться compile-time полиморфизмом, а конкретно паттерном CRTP? Вот сильно упрощенная и обрезанная версия того, как это может выглядеть: template <typename Derived> class Clie...

👁 3.8K
Ggrokaemcpp
grokaemcpp
27 февр., 10:00

Доступ к приватным членам. Sutter hack #опытным Спасибо @d7d1cd за идею для поста) В любой системе есть дырки, которые могут(и обязательно будут) эксплуатировать заинтересованные люди. Вот и в С++ так же. Сегодня мы раскроем, как можно стандартными относительно неинвазивными(не изменяя первоначальный код класса) инструментами изменять приватные поля класса. Возьмем простой класс: class X { public: X() : private_(1) {} template <class T> void f(const T &t) {} int Value() { return private_; } priv...

👁 3.7K
Ggrokaemcpp
grokaemcpp
2 мар., 10:00

​​Доступ к приватным членам. Явная инстанциация #опытным В прошлый раз мы уже выяснили, что явно инстанцируя шаблонный метод класса, можно написать свою реализацию, которая будет жонглировать непубличными членами в самых виртуозных позах. Но! Мы так и не вышли за пределы класса. Ручная специализация шаблонного метода - это такой же метод класса, поэтому он и умеет трогать приватные поля. Хочется прям снаружи получить доступ к полю и уже не ограничиваться реализацией метода. С++ и это может вопло...

👁 3.6K
Ggrokaemcpp
grokaemcpp
12 мар., 11:00

Как применять switch? #новичкам Мы вспомнили про switch и некоторые его особенности. Теперь посмотрим, в каких сценариях их адекватно применять и как это делать. Для начала повторим ограничения. switch может работать только с целочисленными значениями и перечислениями. В основном, конечно, с перечислениями как с именованными числами. В коде не должно быть магических чисел, каждая ветка должна иметь наглядную семантику, а перечисления помогают "называть" числа без неконтролируемого размножения ло...

👁 3.3K
Ggrokaemcpp
grokaemcpp
9 мар., 10:00

Квиз #опытным В С++ даже очевидный на первый взгляд код может привести к весьма неожиданному исполнению. Допустим, мы вот хотим создать вектор пар строковых вьюшек и вывести это добро на консоль. Просто? Просто. Ну раз просто, тогда поучаствуйте в #quiz'е: какой будет результат попытки компиляции и запуска этого кода на С++23? #include <iostream> #include <string> #include <string_view> #include <vector> int main() { std::vector<std::pair<std::string_view, std::string_view>> pairs { {{"one", "tw...

👁 3.1K
Ggrokaemcpp
grokaemcpp
13 мар., 10:00

​​Обзор книжки #3 Начнем с цитаты: "Языки программирования бывают двух видов: которые ругают, и на которых не пишут." С++ ругают все, кому не лень. Небезопасный, раздутый, нечитаемый и тд. Но есть индустрия, в которой С++ любят и никуда с него не будут уходить - геймдев. Им нужен высокоуровневый инструмент, с помощью которого можно просто реализовывать сложные абстракции. Но этого не хватает: в условиях, когда для портирования игры нужно экономить буквально мегабайты памяти и микросекунды исполн...

👁 3.1K
Ggrokaemcpp
grokaemcpp
11 мар., 10:00

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

👁 2.9K

Типы хуков

Нейтральный15 | 2.9K просм.
Вопрос4 | 2.4K просм.
Статистика1 | 3.1K просм.

Длина постов

Очень длинные (1000+)16 | 2.9K просм.
Длинные (500-1000)3 | 2.4K просм.

Типы контента

📝
18
text
2.9K просм.
📷
2
photo
2.1K просм.
Грокаем C++ (@grokaemcpp) — Telegram-канал | PostSniper