Охват к подписчикам
266,3%
ERR
Реакции к просмотрам
2,08%
124 на 21 постов
Пересылки к просмотрам
0,35%
21
Постов в день
0,0
всего 21
Где отзываются чаще
доля реакций к просмотрам- 14 февр.Интересное. В ядре линукса руками заинлайнили две функции, тем самым повысив на 12% скорость обработки входящих UDP пакетов. https://www.opennet.ru/opennews/art.shtml?num=64783 У меня есть шутка про UDP, но она до тебя не дойдет (на 12% быстрее).6,01%
- 10 апр.Чистовик: Сайт отслеживает переход популярных проектов на модули C++. По прогнозу к 2167 году переедут все 😛: https://arewemodulesyet.org/5,41%
- 20 февр.Интересна ли тема Qt? Сегодня речь пойдет про QPointer. Как известно, в Qt всё строится вокруг QObject со своей механикой владения объектами, отличной от использования "стандартных" умных указателей, типа std::shared_ptr. Давайте посмотрим на такой пример: в наш класс передается некий наследник QObject, которым мы не владеем. Далее в какой-то момент времени нам необходимо удостовериться, а существует ли этот объект еще или нет. struct Class: { Class(QObject * obj) : obj_(obj) {} void do() { if (obj_) { // жив ли объект по указателю? //obj_->method(); // UB, если нет }; } QObject * obj_; }; В стандартном C++ мы бы воспользовались weak_ptr. Но в Qt есть специальный класс с довольно абстрактным названием QPointer, который ведет себя как обычный сырой указатель, однако автоматически очищается когда хранимый им указатель удаляется. Поэтому мы можем проверить, удалился ли объект по указателю. Внесем простые изменения в класс: QPointer<QObject> * obj_; Теперь проверка if (obj_) будет работать как ожидается, при этом нам не обязательно оборачивать указатель в QPointer при передаче в конструктор класса. В чем отличия от weak/shared ptr? Во-первых не нужно изначально оборачивать указатель в shared, что может быть не всегда и возможно. Во-вторых работает только с наследниками QObject. Ну и механизм работы отличается, что кстати может легко сломаться в многопоточном коде. О мёртвых указателях либо хорошо, либо ничего.4,23%
- 24 февр.#мем что ли выложить Идет корова по лесу, видит, проект горит. Села в нее и выгорела.3,80%
- 17 авг. 2025 г.Многим известно, что std::string можно создать из указателя на char * (допустим из некой C-шной функции): #include <iostream> #include <string> static std::string str = "OK"; const char * getStr() { return str.c_str(); } int main() { std::cout << "str: " << std::string(getStr()) << std::endl; } Но что будет, если нам прилетит nullptr и мы передадим его в конструктор std::string? const char* getStr() { return nullptr; //return str.c_str(); } Можно подумать, что создастся пустая строка. В конце концов, почему бы и нет, я бы например реализовала строку именно так. На самом же деле передавать nullptr в конструктор строки нельзя и в общем случае будет UB. На gcc у меня это приводит к std::logic_error. А вот на msvc уже будет Access violation reading location 0x0000000000000000. Ситуация немного прояснилась с выходом C++23. Создавать строку из nullptr более нельзя: basic_string( std::nullptr_t ) = delete; // C++23 std::string s = nullptr; // нельзя Хотя кажется, что проблему с возвратом nullptr это не решает.3,46%
- 15 сент. 2025 г.Как можно оформить в C++ длинный строковый литерал и разбить его на нескольксо строк в коде? Допустим, мы хотим разбить длинную строку в коде на несколько линий, но так чтобы переносы строк и отступы из самого кода не повлияли на результат. Один из проcтейших способов - просто написать строки в кавычках друг за другом: std::string str1 = "Если ты, следуя правому разуму, будешь старательно," " ревностно и любовно относиться к делу, которым ты в" " данный момент занят..."; std::cout << str1 << std::endl; // напечатает всё в одну строку Такой вариант склеит строки без переносов \n, но тут важно самостоятельно не пропустить пробелы в местах разрывов. Однако, есть и другой способ: можно использовать кавычки только в начале и конце всей строки, вставив символ \ как самый последний (!) на каждой строке: std::string str1 = "Если ты, следуя правому разуму, будешь старательно, \ ревностно и любовно относиться к делу, которым ты в \ данный момент занят..."; std::cout << str1 << std::endl; // напечатает всё в одну строку При этом начинать новую строку следует с самого начала, иначе любой отступ в коде попадет и в саму строку. Неудобно, правда? А как же raw string literals? Те самые, что заключаются в R"( и )" (или другие разделители)... Да, они замечательно подходят, чтоб не экранировать разные символы, вроде кавычек и обратных слешей: std::string json = R"( { "path": "C:\Program Files\", } )"; Но что будет, если взять нашу цитату, перенесенную по строкам в коде: std::string str1 = R"(Если ты, следуя правому разуму, будешь старательно, ревностно и любовно относиться к делу, которым ты в данный момент занят...)"; Оно вставит переносы строк \n и отступы из кода в результат. Мой победитель: просто строки в двойных кавычках на каждой строке. Просто, привычно, не вставляет ненужных символов и позволяет форматировать код.3,12%
- 30 мар.Утверждён стандарт C++26. Мне понравились новые няшные операторы ^^ 😇: static_assert(^^i != ^^j); https://www.opennet.ru/opennews/art.shtml?num=651022,84%
- 27 февр.Начиная с С++23 официально доступны директивы #elifdef и #elifndef, так что теперь например вместо: #ifdef WINDOWS // #elif defined(MACOS) // #elif defined(LINUX) // #endif можно будет писать короче и консистентнее: #ifdef WINDOWS // #elifdef MACOS // #elifdef LINUX // #endif Краткость — сестра таланта (и брат нового стандарта)2,45%
- 24 янв.#Шпаргалка-повторялка. Rvalue или Lvalue? Упрощенно Lvalue (left value) это то, что стоит слева от оператора присваивания =, а rvalue (right value) справа: lvalue = rvalue. Однако, все немного сложнее. Если можно получить адрес некоего выражения, то зачастую это lvalue. Если нельзя - то это обычно rvalue. Rvalue концептуально часто временный объект без имени (например результат работы функции, временное значение, литерал). А вот lvalue обычно имеет имя. А еще rvalue могут быть перемещены, но об этом в другой раз.2,16%
- 6 мар.Тут у ребят nullptr не всегда равен 0 (как могло бы ожидаться), а иногда -1 (название канала намекает). https://t.me/cpp_durka/34 Лучше один раз увидеть, чем сто раз услышать nullptr2,04%
- 4 мар.Хороший курс лекций по плюсам (на рутубе) - язык русский, а вот слайды почему-то на английском (на канале на рутубе есть и версия с русскими слайдами). https://t.me/cpp_lects_rus/333 Cмотря какой rutube, смотря сколько slides1,72%
- 31 дек.В честь наступающего Нового Года запощщу тупой мем 🤩🤩 @jokespp1,72%