No video

[C++] Правильно перегружаем все 49 операторов

  Рет қаралды 41,898

Efremov Engineer

Efremov Engineer

Күн бұрын

В этом видео мы разберем как правильно перегружать все операторы в C++, поймем для чего нужны и когда могут быть необходимы дружественные функции при перегрузке операторов. Научимся перегружать операции вывода из потока и ввода в поток. Узнаем как перегружать new, delete и даже оператор запятая!
0:15 - Для чего нужна перегрузка операторов в C++
1:30 - Синтаксис и особенности перегрузки операторов в C++
18:40 - Дружественные функции в перегрузке операторов
23:10 - Когда не обойтись без дружественных функций
28:00 - Перегрузка всех операторов в C++ примеры
39:00 - Перегрузка операторов вывода и ввода в поток
43:40 - Перегрузка операторов new и delete
47:00 - Перегрузка оператора запятая ","
Задавайте Ваши вопросы:
Я в VK - id29708...
Я в FB - i2m.su/klotNf
Group VK - codrob
Group FB - i2m.su/xRPlWf
Бесплатный курс программирования: school.it2moro....

Пікірлер: 65
@Vitrebenki
@Vitrebenki 7 жыл бұрын
Лучше в будущем не добавлять активную музыку. Отвлекает. Ну а так урок очень даже хороший. Мелодия из игры престолов почти норм.
@bama2619
@bama2619 3 жыл бұрын
Спасибо. Понятно объясняешь. Очень помогает. Фоновую музыку можно потише.
@danko10116
@danko10116 2 жыл бұрын
Молоток! Отлично всё разжевал, прирождённый наставник. Продолжай в том же духе!
@user-tu8yv7md4p
@user-tu8yv7md4p 2 жыл бұрын
Лучший урок по теме перегрузок в классе
@user-iy9wp5gn3g
@user-iy9wp5gn3g 2 жыл бұрын
Операции побитового сдвига работают также и с файлами. В этой реализации побитового сдвига вправо будет при считывании данных из файла нужно будет отсеивать запятые. Плюс они занимают место в файле, что не очень. По поводу дружественных функций их все же нужно будет дублировать если слева оператор вектор 2 либо справа оператор вектор 2. По поводу оператора индексации массива. Его используют для того чтобы индексировать массив, а не выбирать элементы из одного экземпляра (Для этого есть гет и сет функции). Реализация должна быть через свитч. При вводе выхода из диапазона срабатывает default
@Magomedrasul7
@Magomedrasul7 2 жыл бұрын
Музыка в тему мне кажется, видео Топ! мне зашел урок, Спасибо !
@sargeus
@sargeus 5 жыл бұрын
я бы назвал не Vtctor3 а 3DPoint к примеру :) Спасибо за видос.
@zefff1904
@zefff1904 3 жыл бұрын
Кто переменную с цифры начинает? =)
@user-tu8yv7md4p
@user-tu8yv7md4p 2 жыл бұрын
За музыку отдельный респект
@lovavardanian2844
@lovavardanian2844 7 жыл бұрын
Как новичок и человек который еще не работал с перегрузкой, скажу что это полезное видео. И да, ладно "ретурн" и "фелс" 35:34, но как же меня бесило "фроинд"..... А так красава.
@user-ns4tf7hm3p
@user-ns4tf7hm3p 7 жыл бұрын
ооо дааа
@Vitrebenki
@Vitrebenki 7 жыл бұрын
У меня учительница по электронике говорила "фальш"). Хотя фрьонд таки покруче будет.
@user-ur5kc8er8w
@user-ur5kc8er8w 6 жыл бұрын
От склада ума зависит. Кто -то лучше запоминает несвязанные логически абстракции (языки), кто -то способен оперировать сложными логическими действиями. Я тоже плохо заучиваю. Да и не интересны языки.
@user-zi2pk5of3m
@user-zi2pk5of3m 6 жыл бұрын
Друг, а ты не мог бы прикрепить cpp файл с перегрузками?
@HELLICOIL
@HELLICOIL 7 жыл бұрын
Спасибо, глобально и доходчиво!
@helloworld-fv8kx
@helloworld-fv8kx 2 жыл бұрын
супер
@CrIcKeT98
@CrIcKeT98 3 жыл бұрын
27:16: У вас в комментарии и в коде ошибка. Объявление дружественной функции-оператора сложения в 22-й строчке даёт этой функции доступ к приватным элементам Vector2, но не Vector3. 22 строку необходимо также продублировать в объявлении класса Vector3. Тогда функция-оператор сложения будет дружественной к обоим классам и будет иметь доступ к приватным элементам обоих классов.
@dk19888
@dk19888 8 жыл бұрын
спасибо за видео! отличная работа!!!) жду новые видео и уже подписался на канал)
@efremov_engineer
@efremov_engineer 8 жыл бұрын
Спасибо :) Если есть идеи, что бы хотели видеть в новых видео - пишите
@dk19888
@dk19888 8 жыл бұрын
в инете много статей по реализации списков на плюсах, но сравнительно мало по хэш таблицам (unordered_map, unordered_set). было бы интересно или статью на хабре или видео. к видео добавьте ссылку на репозиторий с кодом. крайне удобно смотреть и самому параллельно тестировать.
@efremov_engineer
@efremov_engineer 8 жыл бұрын
Быстро отснять не получится, не раньше чем дней через 5 выйдет по хеш-таблицам
@dk19888
@dk19888 8 жыл бұрын
5 дней это фантастика! я даже согласен на 10)) раз открыт стол заказов, тогда еще было бы интересно посмотреть на реализацию умных поинтеров в плюсах)
@efremov_engineer
@efremov_engineer 8 жыл бұрын
Дело в том, что запланировал уже несколько видео, список веду) Завел топик в группе, пишите туда, чтобы ничего не пропустить) vk.com/topic-127066486_34114932
@yuperos
@yuperos 7 жыл бұрын
Зря условные конструкции в операторах сравнения return (v1.x == v2.x) && (v1.y == v2.y); гораздо короче, лаконичнее и эффективнее (хотя, возможно, -O2 оптимизирует до подобной конструкции) А так же, какой такой "
@kodirovsshik
@kodirovsshik 2 жыл бұрын
Видео конечно полезное, чтобы объяснить концепт перегрузки операторов, но слово "правильно" в названии уж точно лишнее
@EvgWin7
@EvgWin7 7 жыл бұрын
Бля чувак, я никогда не цеплялся к произношению, но блин friend читать как "фроинд" это капец слух режет, как такое вожможно, это слово же в 1-2 классе проходят на иностранном?)
@EvgWin7
@EvgWin7 7 жыл бұрын
+CODE & ROBOTS че критику не принимаешь
@dmitri9382
@dmitri9382 5 жыл бұрын
На английском*. У человека может только немецкий был, а там как раз таки "фройнд"
@suajeen4572
@suajeen4572 2 жыл бұрын
Вместо трёх строк в операторе < можно использовать одну - return this;
@tatianachiter3483
@tatianachiter3483 7 жыл бұрын
можно ли уточнить по поводу перегрузки оператора ввода. Почему вы используете std::cin в этой перегрузке, а не s (имя потока-параметра)?
@yakwilik
@yakwilik 2 жыл бұрын
это ошибка
@eugenex8892
@eugenex8892 5 жыл бұрын
Суппер!
@romadmn
@romadmn 7 жыл бұрын
Спс, полезное видео ;)
@ed.morand
@ed.morand 6 жыл бұрын
C istream не понял. Зачем использовать istream s, если она не используется, вместо неё используется cin, хотя я поставил s >> v1.x и т.д. и возвращаю s, вроде всё работает. Так если использовать cin, то istream можно не прописывать, а использовать типа void. )
@user-rx1nd6kg9u
@user-rx1nd6kg9u 6 жыл бұрын
годно очень
@zombibober
@zombibober 8 жыл бұрын
жду следующий выпуск
@efremov_engineer
@efremov_engineer 8 жыл бұрын
Спасибо за поддержку) Если есть идеи для видео - предлагайте!
@zombibober
@zombibober 8 жыл бұрын
+CODE & ROBOTS - Программирование и робототехника можешь рассказать что и как учить? И как ты учил.Какие языки ты знаешь?
@efremov_engineer
@efremov_engineer 8 жыл бұрын
Хорошо, в одном из следующих видео будет
@user-lu1ic6zh8m
@user-lu1ic6zh8m 8 жыл бұрын
скорее разбор "как не нужно перегружать". Оператор присваивания в корень не верно, принимаемый аргумент тоже не верно. Все аргументы должны приниматься как константные ссылки на объекты. Результатом операций должна быть или ссылка на объект (если присваивание) или новый объект (арифметика). Советую найти другой источник информации)
@efremov_engineer
@efremov_engineer 8 жыл бұрын
Если бы Вы смотрели видео, то обратили бы внимание, что я говорил об этом, о константах, возвращаемых значениях и т.д. И после того, как я озвучил основные правила перегрузок, я сказал, что в остальных примерах приводятся способы реализации, более внимание объявлению перегрузок особо не уделялось. Так что посмотрите видео, прежде чем "советовать" :)
@user-lu1ic6zh8m
@user-lu1ic6zh8m 8 жыл бұрын
Вы действительно не видите разницы между Vector3& operator = (const Vector3 &other) и Vector3 operator = (const Vector3 &other) ?
@efremov_engineer
@efremov_engineer 8 жыл бұрын
Друг, еще раз рекомендую посмотреть видео БОЛЕЕ ВНИМАТЕЛЬНО. Разница есть, нужно делать как в первом варианте, т.е. возвращать ссылку на ТЕКУЩИЙ объект. При перегрузках большинства других операторов, ссылку возвращать нельзя.
@ed.morand
@ed.morand 6 жыл бұрын
И ещё вопрос, как к закрытым переменным класса обращаться, я думал через friend можно будет, но нет, ошибку выдает. Через методы выводить и вводить?
@gamephoenix666
@gamephoenix666 5 жыл бұрын
через гетер и сетер
@vesh95
@vesh95 5 жыл бұрын
а оператор return можно реализовать?))
@GooseDL1337
@GooseDL1337 4 жыл бұрын
Голос смешной xD
@user-th1qf1pv8m
@user-th1qf1pv8m 6 жыл бұрын
топп
@vov4egde
@vov4egde 7 жыл бұрын
все ок, вот только бы без музыки. ВООБЩЕ!
@OlegKisselef
@OlegKisselef 7 жыл бұрын
Мои поздравления, такое количество чепухи о программировании на плюсах я давно не слышал. У меня даже нет столько времени, чтобы подробно рассказать про все неточности и ошибки в этом "обучающем" видео. Искренне надеюсь, что когда автор разберётся с плюсами, поймёт разницу между исходником и скриптом, узнает, для чего действительно нужен friend, а так же поперегружает операторы в боевой ситуации, он не просто уберёт слово "правильно" из названия, а вообще удалит это видео, чтобы не позориться.
@efremov_engineer
@efremov_engineer 7 жыл бұрын
Да, есть свои недостатки в этом видео, но согласись, что для тех кто вообще не знаком с перегрузкой операторов это видео будет полезно, для понимая основ. Я и не претендую на полное и точное изложение материала, для этого есть книги ;)
@faserg1
@faserg1 7 жыл бұрын
CODE & ROBOTS Тогда вот тебе недочёты при перегрузке оператора + ты упомянул const, чтобы не менять правое значение. а про левое забыл. надо делать функцию с const. Vector3 opearator +(const Vector3 &v1) const; Ещё, в операторах присваивания возвращают указатель или ссылку на себя. ведь этот объект никуда не денется, если его не пересоздавать. иначе получается, что нужно вызывать ещё и конструктор копий. непорядок.
@gamephoenix666
@gamephoenix666 5 жыл бұрын
@@faserg1 а ты часто выступаешь , перед почти 25 тысячной аудитории ? в комментариях , могут писать все , а вот вести свой KZfaq канал , могут единицы
@evgenyye
@evgenyye 3 жыл бұрын
malloc() давно устарела. Страуструп давно советовал остерегаться такого выделения оперативной памяти
@SpinnerMile
@SpinnerMile 5 жыл бұрын
У структуры все поля, методы и функции изначально паблик.
@ostapsalo6880
@ostapsalo6880 5 жыл бұрын
GameOfThrons
@exx-ns4tt
@exx-ns4tt 7 ай бұрын
дурацкая музыка на заднем фоне очень отвлекает
@Alexander_Gurov_RF
@Alexander_Gurov_RF 2 жыл бұрын
Унарные + и - нужны для СМЕНЫ ЗНАКА ЧИСЛА (актуально для знаковых типов), а не для сложения и вычитания! С этого места дальше смотреть не стал.
@PassageGamesRus
@PassageGamesRus 7 жыл бұрын
звууук отвратный
Уроки С++ Стек, Куча, Указатели (11)
26:06
Software Development
Рет қаралды 37 М.
❌Разве такое возможно? #story
01:00
Кэри Найс
Рет қаралды 3,8 МЛН
How I Did The SELF BENDING Spoon 😱🥄 #shorts
00:19
Wian
Рет қаралды 37 МЛН
Parenting hacks and gadgets against mosquitoes 🦟👶
00:21
Let's GLOW!
Рет қаралды 13 МЛН
SPONGEBOB POWER-UPS IN BRAWL STARS!!!
08:35
Brawl Stars
Рет қаралды 21 МЛН
Faster than Rust and C++: the PERFECT hash table
33:52
strager
Рет қаралды 551 М.
Собеседование Junior C++
45:32
Ambushed Raccoon
Рет қаралды 111 М.
ЯЗЫК АССЕМБЛЕРА С НУЛЯ | #1 НАЧАЛО
54:43
Premature Optimization
12:39
CodeAesthetic
Рет қаралды 796 М.
Добро пожаловать в C++
16:08
Winderton
Рет қаралды 461 М.
C++ Siberia 2019: Антон Полухин, C++ на практике
54:26
❌Разве такое возможно? #story
01:00
Кэри Найс
Рет қаралды 3,8 МЛН