Пікірлер
@__is_Void
@__is_Void 12 күн бұрын
А почему видео перестали выходить?(
@theserghd1
@theserghd1 Ай бұрын
не "каут", а "сиаут" блеять
@anto_droido
@anto_droido Ай бұрын
Спасибо большое за полезный контент)
@hostpost9752
@hostpost9752 Ай бұрын
Спасибо чувак, крутой конт. A using className::function; и using namespace blabla; по сути то же самое или ...
@hostpost9752
@hostpost9752 Ай бұрын
супер контент 😉
@dmitrykukushkin4960
@dmitrykukushkin4960 2 ай бұрын
Благодарю, весьма.
@greatskydrake9531
@greatskydrake9531 2 ай бұрын
Я ТРЕБУЮ ПРОДОЛЖЕНИЯ!!!
@anar2609
@anar2609 2 ай бұрын
Каким ide вы аользовались в данном видеоролике ?
@PolevoysProgramming
@PolevoysProgramming 2 ай бұрын
@@anar2609 Привет, это Qt Creator (использую его на работе для работы с фреймворком qt)
@anar2609
@anar2609 2 ай бұрын
@@PolevoysProgramming наверное он не подойдёт для работы с консольными программами, вебом и прочим не относящимся к Qt Framework
@PolevoysProgramming
@PolevoysProgramming 2 ай бұрын
@@anar2609 В целом может подойти, на данный момент мы как раз пишем сервер (консольные приложение) к веб сайту, и используем qt+boost для связки, там много удобных классов, не связанных именно с графическим интерфейсом + при желании qt без проблем интегрируется с другими IDE ( например Visual Studio) при необходимости
@Icanfly-
@Icanfly- 2 ай бұрын
Создатели C++ забыли для чего нужен любой язык программирования - для решения прикладных/бизнес задач, вместо этого они решают проблемы самого C++
@РоманКондратов-г1р
@РоманКондратов-г1р 2 ай бұрын
Видео крутые. Но новых давно нет. Жалко. Автор, дорогой, заведи бусти. Многим туда проще подписываться.
@этоя-д8м
@этоя-д8м 3 ай бұрын
спасибо большое))
@Artem-u5e9c
@Artem-u5e9c 3 ай бұрын
Отличный контент! Подписался 👍
@этоя-д8м
@этоя-д8м 3 ай бұрын
все по книжке) идеально для закрепления спасибо!!
@o01122
@o01122 3 ай бұрын
Набрал себе новых книг по С++, тоже изучаю. Пол Дейтел, Хариви Дейтел "С++ 20 Метод готовых объектов" 24й год, 1050стр, потом Райнер Гримм "С++ 20 В Деталях" 500стр, 23 год и ДЖ. Гай Дэвидсон, Кейт Георги "Красивый С++" с пометкой Страуструп рекомендует, 360стр и 23 год.
@elektroyartechnology5117
@elektroyartechnology5117 3 ай бұрын
Прям супер, четко изложено, качественное видео
@РоманКондратов-г1р
@РоманКондратов-г1р 3 ай бұрын
Содержание и подача отличное. Спасибо. Если можно, заведи бусти.
@ИнякинАлександр
@ИнякинАлександр 3 ай бұрын
Проверка if(ptr) в деструкторе лишняя.
@tonch93
@tonch93 3 ай бұрын
Выпускайте почаще видео про с++! Очень полезные
@tonch93
@tonch93 3 ай бұрын
Прекрасный канал. Очень полезный материал. Спасибо
@iusehjkl
@iusehjkl 3 ай бұрын
2:10. Почему на этом моменте компилятор не сгенерировал оператор перемещения или конструктор перемещения? Потому что есть явно определенный конструктор копирования или оператор копирования?
@there1440
@there1440 2 ай бұрын
На сколько мне move семантика применяется когда объект является rvalue значением то есть временным объектом
@Zealoke
@Zealoke 3 ай бұрын
очень жаль, что вы не на бусти решили разместиться. бусти как то уже привычнее
@яйцопожаренное
@яйцопожаренное 3 ай бұрын
Спасибо тебе реально за грамотные видео, очень было интересно послушать, продолжай в том же духе, по комментариям у тебя уже есть любящая аудитория (я вхожу в ее часть) и она только продолжит расти с такими классными видео, у тебя классная харизма и подача, лучший обучающий канал
@ImmerseAlien
@ImmerseAlien 3 ай бұрын
Очень круто!
@qliquiz2687
@qliquiz2687 3 ай бұрын
емае, я только книгу Майерса скачал, а теперь не пригодится
@theserghd1
@theserghd1 3 ай бұрын
татуха уебанская. Но ролик в целом норм
@kunak1197
@kunak1197 3 ай бұрын
Есть интересный пропозал: P2413R0 Remove unsafe conversions of unique_ptr<T> Published Proposal, 2021-07-12 Суть в том, чтобы выдавать ошибку компиляции unique_ptr<Base> = unique_ptr<Derive>(new Derive{}); если в Base нет виртуального деструктора. Просьба к автору объяснить, почему для unique_ptr и shared_ptr не работает CTAD (C++17). И ещë почему надо использовать make_optional для std::optional.
@ARTYOM-v2j
@ARTYOM-v2j 3 ай бұрын
мечты сбываются, спасибо
@vlasud2018
@vlasud2018 3 ай бұрын
Очень хотелось бы подобное видео про касты (static_cast, dynamic_cast и т.д)
@euuhgzz2791
@euuhgzz2791 3 ай бұрын
Eto yje ne RAi eto yje kakoita AD
@Alexander_Gurov_RF
@Alexander_Gurov_RF 3 ай бұрын
В принципе в современных версиях c++ умные указатели не особо нужны. Кроме, пожалуй, shared_ptr. Синтаксис слишком громоздкий, да и избыточно. Можно просто использовать контейнеры. Для массивов - vector. А в c++17 есть такие полезные штуки, как variant и optional. Обёрток куча на все случаи жизни, которые всё сами делают.
@AlexAlex-jk2tn
@AlexAlex-jk2tn 3 ай бұрын
Надеюсь вы шутите, это сырые указатели не нужны, а умные ещё как нужны, постоянно их использую. Я бы даже сказал, что тех, что есть умных указателей иногда не хватает, но boost расширяет их список почти до того, что нужно.
@Alexander_Gurov_RF
@Alexander_Gurov_RF 3 ай бұрын
@@AlexAlex-jk2tn Они в редких случаях нужны. Например, для полиморфных объектов. Там при создании тип указателя надо кастовость, и размер может отличаться. И просто так в контейнер не положишь. Или при работе с сишным API, как обёртки для хранения множества сырых указателей. Всё остальное отлично живёт в любых других контейнерах. И я лично стараюсь вообще избегать использовать new/delete где-то, кроме конструкторов/деструкторов. А лучше и вообще нигде, так как контейнеры всё делают сами. Потому что это ведёт к потенциальным ошибкам.
@wsxpocxeafx
@wsxpocxeafx 3 ай бұрын
@@Alexander_Gurov_RF приведите пример. Про какие контейнеры идёт речь?
@Alexander_Gurov_RF
@Alexander_Gurov_RF 3 ай бұрын
@@wsxpocxeafx Странный вопрос. Любой, в зависимости от задач. vector, list, dequeue, map - для множеств, variant, optional, any - для одного объекта. Если объект нужен только в пределах функции - то создаём на стёке.
@Alexander_Gurov_RF
@Alexander_Gurov_RF 3 ай бұрын
@@wsxpocxeafx это лучше вы приведите пример, где нужен unique_ptr, кроме полиморфных объектов.
@Desotterro
@Desotterro 3 ай бұрын
Братан контент в кайф, давай давай еще
@bulba1995
@bulba1995 3 ай бұрын
Спасибо за прекрасное видео 👍
@dominuspiritus
@dominuspiritus 3 ай бұрын
4:37 1) delete спокойно обрабатывает nullptr 2) delete не обнуляет указатель
@яйцопожаренное
@яйцопожаренное 3 ай бұрын
А зачем ему обнулять указатель? В примере он приводит объект, который хранится на стеке, соответственно он вызовет деструктор, когда выйдет за область видимости, а при вызове деструктора освободится память, выделенная на куче для указателя. Получается обнулять указатель смысла нету, ведь на него сослаться будет невозможно, т.к. объекта существовать не будет.
@KanoKloz
@KanoKloz 3 ай бұрын
Достойно подписки и колокольчика, чтобы не пропускать новые полезные видео, спасибо автору!
@__is_Void
@__is_Void 3 ай бұрын
Лайки растут на глазах
@НикитаСолоненко-р5ы
@НикитаСолоненко-р5ы 3 ай бұрын
Насколько мне известно, unique_ptr реализован без аллокаторов(нет поддержки allocator_traits), он под собой реализован на placement new? Или просто в тупую использует new?
@mexal21
@mexal21 3 ай бұрын
Он вообще память не аллоцирует
@АлександрТимофейлох
@АлександрТимофейлох 3 ай бұрын
с таким четким аккуратным контентом, приятным аудио и видео сопровождением с востребованным материалом твой канал ждет скорейший успех в этой нише. Были бы такие учителя, жить было бы легче
@luteyka
@luteyka 3 ай бұрын
Кстати, даже Microsoft советует почти всегда использовать auto
@luteyka
@luteyka 3 ай бұрын
Единственный канал по C++ с "современным" типом подачи. Как ни зайдешь на любой видос по плюсам, это какой-то хриплый полудед с убогим микрофоном. А тут прям все так, будто смотришь какой-то ролик по фронтэнду, снятый девочкой-дизайнером (в хорошем смысле). Кратко, лаконично, музычка на заднем фоне, вебочка круглая, превью красивое
@timoha-03
@timoha-03 4 ай бұрын
Расскажи лучше о том, как работает cerr.
@assad-
@assad- 4 ай бұрын
я лично против использования auto в негерализированном коде. да, ты не сделаешь лишний раз варнинг, но в коде где стоят одни авто очень трудно понимать, что происходит. это больше про вариант {auto | unsigned} s = vector.size(); например auto a = someclass.somemethod() не поймешь что за тип вернулся, какие у него есть методы. не нужно экономить буквы ради того чтобы просто ускорить печать. код пишется чтобы его читали. а так понятнее. а в случае даже unsigned s = vector.size(); будет варнинг, который должен превращаться в ошибку. в случае про вектор там скорее другой момент -- компиляция под разные платформы и можно этот варнинг не увидеть, но все же в остальных случаях полность квалифицированный тип удобнее. понятно, что иногда нужно избавиться от длинного шаблонного типа, который и так ничего не значит. тогда и auto пойдёт, но всё ж по возможности в таком коде лучше предпочитать конкретный тип.
@SalatikInMyHead
@SalatikInMyHead Ай бұрын
может будеш методы норм называть вместо somemethod, а не на авто гнать? 🤦👎
@teum3048
@teum3048 4 ай бұрын
А потом они рассказывают, что в js не интуитивное преобразование типов и сравнение == 😂🤣🤣
@4tigeek24
@4tigeek24 4 ай бұрын
Мегакруто. Хоть и знаю этот материал, все равно приятно слушать) Да и некоторые кейсы не рассматривал даже.
@Alexander_Gurov_RF
@Alexander_Gurov_RF 4 ай бұрын
std::vector<bool> считается устаревшим и не рекомендуется к использованию, если что. Вместо него следует использовать std::bitset. Ну или вектор от чего то вроде enum class bool_t : uint8_t {False, True};
@SalatikInMyHead
@SalatikInMyHead Ай бұрын
🤦🤦🤦 у тя фантазия разыгралась, все впорядке с vector<bool> 🤣В C++26 приссутствует и предпопсылок к deprecated НЕ ВИДНО!! 👍 удачи std bitset ресайзить 👋
@Alexander_Gurov_RF
@Alexander_Gurov_RF Ай бұрын
@@SalatikInMyHead Оно не deprecated официально. Просто нежелательно к использованию из-за побочных эффектов. И обычно, массив битов используется для хранения флагов, и не нуждается в масштабировании. Вообще, если так посудить - то и с исключениями всё в порядке. Однако, в современном c++ их использование считается моветоном. Потому что они слишком дорогие в плане ресурсов. И в STL были добавлены альтернативы уже имеющимся утилитам, которые позволяют обходиться без исключений.
@SalatikInMyHead
@SalatikInMyHead Ай бұрын
@@Alexander_Gurov_RF програма без побочных эфектов НЕВОЗМОЖНА, о каких эффектах речь идет? 😂😂👎С исключениями все впорядке как испольвались так и используются(в stl тоже), откуда ты инфу берешь хз 🤦
@Alexander_Gurov_RF
@Alexander_Gurov_RF Ай бұрын
@@SalatikInMyHead Условно с ними всё в порядке. Однако, они считаются ресурсоёмкими, и с ними хуже читабельность (код более громоздкий). Именно по этой причине и появились в STL аналоги уже существующих утилит, которые не выбрасывает исключений, а вместо этого возвращают код ошибки. Например, конвертеры. Сам подход с их использованием считается нежелательным по современным нормам. Хотя они и существуют для совместимости. Старая добрая оптимизация возвращается. Техпроцессы достигли своего пика, производительность ядер больше не растёт, развитие идёт в сторону параллелизма. Плюс растёт популярность встраиваемых устройств и микроконтроллеров. И вот в связи с этим в языке множество нововведений.
@SalatikInMyHead
@SalatikInMyHead Ай бұрын
​@@Alexander_Gurov_RF програма нетолько ошибки хендлит, как ты ресурсоемкость получил🤯🤯🤔Юзай фичи поназначению и все будет ОК 👍👍без замеделений К какой теме тут исключения НЕЯСНО, у тя мания какаято 😂😂😂
@Alexander_Gurov_RF
@Alexander_Gurov_RF 4 ай бұрын
В STL для всех размеров данных используется тип size_t. И просто стоит использовать его для указания размера, и не будет никаких проблем. Его размер всегда гарантированно равен размеру указателя. Зачем лепить всякие unsigned, и прочую отсебятину?..
@Alexander_Gurov_RF
@Alexander_Gurov_RF 4 ай бұрын
Не согласен с идеей использовать auto повсюду. Да, есть случаи, когда это необходимо. В основном это лямбда-функции, range based for, auto &[x, y, ...] = ..., итераторы и прочие сложные типы. А в большинстве случаев этим лучше не злоупотреблять. А не инициализированные переменные - вполне нормальное явление, и является элементом оптимизации. Переменные не стоит инициализировать, если она потенциально может быть не использована (функция завершает работу раньше по результату проверки). Естественно, не инициализированными (то есть содержать мусор) могут быть только переменные, размещённые на стёке. Глобальные и все статические переменные размещаются в секции .bss, а все нормальные RTL её заполняют нулями.
@grinlex
@grinlex 4 ай бұрын
легенда
@denissav1033
@denissav1033 4 ай бұрын
Короче, вижу фигурные скобки -- это семантика списка инициализации. Такая семантика будет +/- общей для разных классов. Если фигурные скобки с одним значением -- просто список инициализации с одним значением. Вижу круглые скобки -- это семантика параметров конструктора. Смысл параметров будет разный для разных классов. Надо смотреть, что там заложил автор класса. Поэтому vector vec{10} // вектор длины 1 со значением 10 vector vec(10) // вектор длины 10 с мусором в качестве значений vector vec{10, 0} // вектор длины 2 со значениями 10 и 0 vector vec(10, 0) // вектор длины 10 со значениями 0
@DiIov
@DiIov 4 ай бұрын
Пачему так мало просмотров? Это же шедевр! Хотя на моменте, когда автор приводит пример с auto и cast применительно к vector<bool>, и подгорело знатненько, но, видимо это было сделано для привлечения внимания - такая работа над вниманием аудитории вызывает бескоайнее восхищение)
@kunak1197
@kunak1197 4 ай бұрын
Спасибо🖖, хорошее дополнение к лекциям Konstantin Vlаdimirov. Как же долго std::atomic добирались до float-pointing😲 Вместо lock_guard правильнее юзать scoped_lock даже для одного мьютекса (ну, чтоб не думалось). В C++20 появились защëлки, барьеры и семафоры👍 Доживëм ли мы когда-нить в std до мониторов синхронизации?🤔