*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
@bobrovskij1005 жыл бұрын
Снимите, пожалуйста, видео о том, как разделять проект на файлы и как это всё подключать между собой, как подключать сторонние библиотеки, создавать свои, или просто как подключить готовый класс к проекту. Как пользоваться hex-редакторами и смаке.
@ЕвгенийБелков-о1л2 жыл бұрын
Довод опыт да дар швед давно
@gnot7900 Жыл бұрын
Тут остались только самые настойчивые и заинтересованные ребята. Спасибо за видео!
@Jessica_Cat-l1v11 ай бұрын
🙃 не только! здесь началось самое прикольное! ООП гораздо веселее чем процедурный код😉. Только теперь появился настоящий интерес
@TurboGamasek22810 ай бұрын
за 8 месяцев как продвинулись? это все базовая база, самое начало начал, так сказать
Очень странно, что так мало у Вас подписчиков, принимая во внимание качество контента. Скажу только вот что, удачи Вам.) Надеюсь в скором времени всё изменится в кардинально лучшую сторону. Ведь всё таки у Вас на порядок более хорошее преподношение контента.
@SimpleCodeIT7 жыл бұрын
Спасибо за поддержку!
@sagecat56967 жыл бұрын
И, Вам, за уроки.)
@saidjonasrorov17212 жыл бұрын
Сколько подписчиков было в тот время?
@Анатолий-э6ъ2г Жыл бұрын
@@saidjonasrorov1721 около 20-50 тыс
@TGrod3 жыл бұрын
Это просто супер канал! Уже посмотрел все видео в этом плэйлисте и начал по чуть-чуть кодить. Знания, как известно, без практики забываются (эти не исключение), поэтому приходится периодически возвращаться, чтобы решить проблему, и этот видос мне помог. Никак не мог понять, почему у меня не освобождается память, а вот оно) правда для решения моей проблемы (да и представленной в этом уроке) можно было бы просто использовать умные указатели (они будут дальше по курсу), но я про них чёт забыл :D В общем ОГРОМНОЕ СПАСИБО СЕРГЕЮ!
@ILsanIsAdmin3 жыл бұрын
Большое спасибо за урок! Смотрим всей студенческой группой)
@Плавчик-к9й7 ай бұрын
Сергей, вы просто лучший!!!!Благодаря вам я за 10 дней и просмотром 16-ти тем за день поднял перед экзаменом С++ с нуля!!!!!
@АндрейМиненко-ц3з7 жыл бұрын
Спасибо за урок!
@evgenyye6 жыл бұрын
Как раз то что доктор прописал!!!
@proKaps6 жыл бұрын
Как всегда, очень хорошо.
@aln93916 жыл бұрын
Очень добросовестно. Хорошо бы текстовую версию, хотя бы исходник, и хорошо бы номер урока в названии ролика впереди поставить, а на заставке сместить влево, чтобы длительность ролика не забивала. Во избежание недоразумений - я очень высоко оцениваю, может это издержки отображения на моем ноутбуке утюба..
@flepjack4 жыл бұрын
Комментарий благодарности и для поддержки автора, контент лучший!
@vladalu97946 жыл бұрын
Спасибо за хороший урок!
@_mirai5 жыл бұрын
просто коммент для продвижения!
@alivewel Жыл бұрын
Отличное видео! Спасибо!
@prost55143 жыл бұрын
Thanks a lot, understood each details from it
@TSaqo3 жыл бұрын
хорошо и понятно обьясняеш, спасибо!
@seregapikulev98345 жыл бұрын
Спасибо!
@aleksandrdrobyshev76234 жыл бұрын
Не смотря на то, что честно проработал все предыдущие уроки, и то, что Сергей все оч. доходчиво объясняет, начинаю сдаваться.... смотрю, но почти нечего не понимаю, уж тем более не могу повторить сам. У меня вопрос ко всем, кто наткнется на этот коментарий && кому_все_понятно: вы до этого другие языки освоили, или просто честно прорабатывая все уроки в данный момент четко понимаете как работают все детали синтаксиса данного урока?
@ДмитрийНормов-ю6ц2 жыл бұрын
что именно сложно понять?
@Terlod Жыл бұрын
Поздний ответ, конечно, но когда что-то не получается и ты чувствуешь дискомфорт, ты учишься. Надеюсь, у Вас всё получилось с программированием или другой областью, которую Вы для себя выбрали
@aleksandrdrobyshev7623 Жыл бұрын
@@Terlod хаха, нет) У меня очередная 100500я попытка прогать на ++, под микроконтроллеры, и все идёт оооочень туго. Однозначно нужен талант или склонность, иначе это одно мучение.
@РезиноваяГермания Жыл бұрын
@@aleksandrdrobyshev7623 Как у вас дела, Вы еще программируете на с++ или сдались?
@Larakara3219 ай бұрын
тоже уперся в этот вопрос. ответ примерно такой - автор приводит удаление объекта через указатель, у этого указателя есть свой(!) тип данных, в данном случае это базовый класс, если бы тип указателя и тип объекта бы совпадал - то проблемы бы не возникало, однако ситуации всякие бывают и тут вроде как одно из решений это сделать деструктор виртуальным, а иначе вызовется только деструктор базового класса, а наследуемый деструктор пролетает, хбз откуда и как так получается но вот так вот работает С++, типа слово virtual обязывает компилятор заглянуть в наследуемый класс
@mari_mick Жыл бұрын
"так само" і "а далі" гріє душу)
@jewelkz4 жыл бұрын
Спасибо за видео)
@youjustillusion5364 жыл бұрын
отличные уроки, как всегда лайк!
@tapirskiy5 жыл бұрын
Всем рассказываю, какой Вы крутой!)
@vladimirdiadichev61407 жыл бұрын
Спасибо
@ЧеловекСвободный-е4н3 жыл бұрын
Круто молодец! Продолжай!
@rustamibrahimli21136 жыл бұрын
Для тех у кого проблема с вызовом Деструктора : Не нужен никакой system("pause") или метод getchar() ..Заходите в свойства проекта Linker - General - System и Там меняете SubSystem на Console(Subsystem/Console).
@coolomet6 жыл бұрын
Ещё можно вместо этого тупо убрать return 0;, а system("pause"); оставить.
@rajinthunderkeg50056 жыл бұрын
@@coolomet если return 0; убрать, то main() у тебя ничего возвращать не будет, если конечно он у тебя определён с каким-либо типом(исключение - void). ну это если чисто доебаться из-за стандартов плюсов, а так можно делать что угодно, лишь бы работало
@TheWladberlin5 жыл бұрын
Я на каждый урок новый проект делаю, мне проще system("pause") написать, чем каждый раз в установках копаться.
@bama26193 жыл бұрын
Супер)) Спасибо
@photographer_nu Жыл бұрын
4:17 - Сергей про грамматическую ошибку, с кодом все как и должно быть....
@АндрейСайкин-з6р4 жыл бұрын
Автор - молодец! Согласен, знать о виртуализации деструкторов полезно, но вот делать так, думаю, плохая практика. Сначала мы пытаемся обмануть компилятор - заказать место в памяти для класса А, а создать класс В, который занимает в памяти места больше. А потом доблестно закрываем "косяк" компилятора, который сами же и спровоцировали. И еще возник вопрос: если мы объявим еще один экземпляр объекта А и операционная система нам вернет указатель на ячейку памяти, следующую за первым объектом А, то создав этот объект, мы затрем "хвост" В. Т.е от объекта В в памяти останется только часть А? Или я не правильно понимаю?
@almatytelecom13 жыл бұрын
тоже интересно
@ДмитрийНормов-ю6ц2 жыл бұрын
неправильно.
@danielluko76352 жыл бұрын
Что ты курил? это фишка ООП
@HPMuwa5 жыл бұрын
Мне нравится монтаж видео
@osvab0005 жыл бұрын
Класс!
@elinaallakhverdova3825 жыл бұрын
Спасибо за видео! И всё же, я не до конца понимаю, что делает слово virtual. В отдельных случаях вполне понятно, но что там "под капотом", до меня не доходит.
@TheWladberlin5 жыл бұрын
Очень подробно в #103 он объяснил. При чем в разных вариациях. Просмотри тот урок.
@spark-57273 жыл бұрын
you are the best
@ivan_kirsanov Жыл бұрын
Если я правильно все понял, то правильнее и надежнее всего виртуальные деструкторы и деструкторы override лучше всегда делать "по умолчанию" во всех классах при наследовании?
@annademidenko63566 жыл бұрын
👏
@АдамПрокопович3 жыл бұрын
все понятно)
@std_void2 жыл бұрын
спасибо за столь ценные уроки! вопрос: player.Shoot(new Gun) деструктор Gun не вызывается. это значит, что происходит утечка памяти и так лучше не делать?
@Сергей-т9д7в2 жыл бұрын
Новый объект создастся, его адрес будет передан в метод Shoot и после завершения метода - потеряется в пространстве и времени. После этого удалить объект будет невозможно.
@std_void2 жыл бұрын
@@Сергей-т9д7в спасибо, так всё-таки он останется в памяти, пока программа выполняется... не стоит так делать)
@sgimancs5 жыл бұрын
Было бы очень разумно, если в плюсах бы был OFF/ON-режим для авто-освобождения используемых ресурсов как в др. яз. В этом случае плюсы были бы еще более ценнее. Но сейчас "в ручную" все это "ворганить" не очень приятно и надежно. Для ручного контроля утечки памяти на плюсах все же требуется большая внимательность и бдительность.
@amirbabaev7211 Жыл бұрын
В таком случае вам нужно перейти на c# :D
@wasony.1264 жыл бұрын
Danke
@Kibermasternet6 жыл бұрын
Подскажите, плиз, а почему переопределяя виртуальный деструктор, всё же, вызывается деструктор базового? Если переопределить виртуальный метод, то будет вызван только метод наследника, а базового нет.
@petardo77836 жыл бұрын
Потому что как было сказано в предыдущих уроках, базовый класс является частью класса наследника (Утрирую: в памяти компьютера находится слепок базового класса потом идёт участок слепок класса наследника), и как нам гласит народная мудрость - Каков цикл жизни класса = вызывается конструктор, и потом когда класс отработал своё вызывается деструктор. Схема вызова в данном уроке = Конструктор базового класса, конструктор класса наследника, деструктор класса наследника, деструктор базового класса.
@arty1f6 жыл бұрын
@@petardo7783 : Бред пишите. Тогда прочему в прошлых уроках вызыванный метод Shoot() отрабатывал только у того объекта класса, через который данный метод был вызван. По вашей логике, вызывая Shoot у Submachinegun, отработал бы Shoot и у Gun и у Weapon, если бы не был чисто виртуальным.. Они же все "является частью класса наследника". Я думаю логика для виртуальных деструкторов просто написана через костыли, вот и все.
@Kokurorokuko3 жыл бұрын
@@arty1f Я думаю, Вы правы насчёт костылей. Скорее всего, слово virtual работает немного по-разному с обычными методами и с деструкторами.
@almatytelecom13 жыл бұрын
@@Kokurorokuko похоже на то что это правда
@ИгроманРоман-н2ш Жыл бұрын
Спасибо за урок ну немного подправлю сам обьект удаляется ну вот если в этом обьекте будет динамический масив он останется
@LenTos13376 жыл бұрын
А почему тогда конструктор не надо переопределять?
@petardo77836 жыл бұрын
Потому что если смотреть в сторону ООП, то каждый класс несёт свои данные. Классы наследники дополняют базовый класс (Расширяют функционал). Но можно из класса наследника устанавливать значения для базового класса.
@vladportnov30415 жыл бұрын
потому что конструктор наследника не может вызваться, если не вызвался конструктор базового класса, так что переопределять и не нужно
@smart_electronics_il4 жыл бұрын
А что мешает использовать вместо классической схемы, vector для выделения динамической памяти ? там всё само очищается.
@maksvell_7774 жыл бұрын
Нашёл ответ на этот вопрос?
@Роман-т5е6с2 жыл бұрын
@@maksvell_777 походу нет(
@Viamsupervadetvadens7 жыл бұрын
up
@axelka93423 жыл бұрын
ясненько, но не понятно только в какой момент вызываются деструкторы в случае объектов без динамического выделения памяти
@eugeneshklyarevich49052 жыл бұрын
деструкторьі вьізьіваются в тот же самьій момент. Более того, автор в данном уроке и описьівает конструктор и деструктор без вьіделения динамической памяти, а только симулирует вьіводом сообщения в консоль
@wasony.1264 жыл бұрын
👍👍👍👍👍👏👏👏👌👌👌👌
@matveybolotov13743 жыл бұрын
В топ
@Рыззе4 жыл бұрын
У меня в Code::Blocks если этого не сделать, то компилятор пишет предупреждение: "warning: deleting object of abstract class type 'Gun' which has non-virtual destructor will cause undefined behavior [-Wdelete-non-virtual-dtor]|"
@ОлександрАнічкін2 жыл бұрын
Через pragma думаю решиться проблема
@apelsin30015 жыл бұрын
Сегодня был вопрос про виртуальный деструктор от работодателя. Не смог ответить.
@kaynsolo7 жыл бұрын
4:19, опечатка на суть не влияет, даже не обратил внимание)
@pubgr8625 жыл бұрын
Ясно зачем это надо, не ясно только где логика в этом. Ведь такие манипуляции для методов мы делали как раз таки чтоб система понимала что надо вызвать один конкретный метод в каком либо классе наследников, а не все методы с похожим на званием вплоть до базового.
@pubgr8625 жыл бұрын
Блен, я понял это делается чтоб вызвать именно деструктор класса наследника, а уже он чтоб уничтожить объект своего класса вызывает деструктор базового и так по цепочке😳
@vladportnov30415 жыл бұрын
@@pubgr862 так тогда бы вызывался вначале деструктор базового класса, а потом только наследника
@GanjaRaider Жыл бұрын
Виртуальный и с реализацией? Вот тут совсем запутался...
@sleepyNovember_project10 ай бұрын
Виртуальный, но не чисто виртуальный, поэтому и реализация вполне допустима
@kaisaryerdenbekov15886 жыл бұрын
56
@OriginNikOneMas7 жыл бұрын
В чем проблема, если не вызывается деструктор?
@shaa81936 жыл бұрын
Ну смотри, как говорилось в видео про динамическую память, если не освобождать эту память(сорь за тафтологию), то будет утечка памяти и будет перегружаться твоя оперативка
@OriginNikOneMas6 жыл бұрын
Lafy я понимаю это. Но пробдема в том что , что у меня не вызывается деструкиэтор.
@shaa81936 жыл бұрын
у тебя просто наверное не настроено, у тебя диструктор выводиться после "нажмите любую клавишу чтобы продолжить..."
@shaa81936 жыл бұрын
ну либо что-то не так делаешь)
@WebArchitector6 жыл бұрын
так и есть , у многих такая проблема
@user-fo9qs5nt1z6 жыл бұрын
Тоесть,это деструктор класса A,который,вызывает деструктор B?
@petardo77836 жыл бұрын
Нет. Это цепочка событий, создаётся конструктор базового класса, конструктор класса наследника, деструктор класса наследника, деструктор базового класса.