Деструктор что это. Зачем нужен деструктор класса в ООП. Деструктор с параметрами. Перегрузка. #80
HTML-код
- Опубликовано: 14 сен 2017
- Понравилось видео или оказалось полезным? Подпишись!
Деструктор что это. Зачем нужен деструктор класса в ООП. Пример. Деструктор с параметрами. Перегрузка. C++ Для начинающих. Урок#80
Область видимости. Глобальные переменные и локальные переменные. C++ для начинающих. Урок #37
goo.gl/wgczMR
Динамический массив с++ пример. Создание, заполнение, удаление, размер динамического массива. #55
goo.gl/9dqZM9
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit
почти весь наш универ место того чтоб смотреть онлайн лекции профессоров, смотрит сипл кода. :)
* симпл)
Сначала симпл код, а потом лекции профессоров :)
Деструктор что это. Зачем нужен деструктор класса в ООП. Пример. Деструктор с параметрами. Перегрузка. C++ Для начинающих. Урок#80
Даже я, зная C++ c удовольствием пересматриваю. Спасибо за труд.
Повторение - Мать учения! Мать с большой буквы!
Уроки замечательно построены, ясно, просто, четко, интересно. Я - педагог с большим стажем, информатик, знаю, о чем говорю. "Кто ясно мыслит, тот ясно излагает"... Спасибо!
Серег, от души как обычно)
#деструктор #ООП #SimpleCode #урокипрограммирования
Спасибо, твои уроки очень сильно помогают мне в изучении С++, спасибо, что помогаешь новичкам всё это понять)
Огромная помощь мне, как студенту. Всегда думала, что не люблю кодить, а тут смотрю и ведь правда интересно, хочется знать больше. Огромное спасибо, просто потрясающе 🔥
Как жизнь?
меня пугает, что по всей видимости, в университете я буду учит то, что уже заучил ранее.
@@user-lt1iz1kg4c , пусть тебя это не пугает, найдётся то чего не знаешь, и можно будет сфокусироваться именно на этом, вместо того чтобы пытаться почти с нуля освоить
Спасибо! Благодаря вам получаю одно удовольствие от изучения с++!
После твоих уроков, чувствую себя значительнее умнее на ЯП С++:) потратил почти год на изучения языка, но значительно созрел только за месяц просмотра твоих уроков по С++) Буду стремится превзойти Вас Мастер Сергей :з но пока до этого далекий тернистый путь :'З
Ты хочешь сказть, что за целый год ты узнал меньше чем здесь за 1 месяц? Ты что дядя, ты что читал такое вообще, чтобы за 1 год узнать меньше чем здесь за 1 месяц)
@@andreyvolkov3117 Мне кажется что это просто ПРОКРАСТИНАЦИЯ, либо он не знал откуда взять информацию, либо же Сергей объясняет подробнее, а ему раньше просто было трудно хотя бы понять тему. У меня такое же было, там в уроках типа "быстрый и легкий С++ для чайников" объясняли так, как будто у тебя как минимум семилетний стаж в программировании.
Как дела сейчас?
@@user-mm5ln4qh5q хуево
@@user-mm5ln4qh5q все отлично, работаю на стройке
Большое спасибо вам за урок и прекрасное пояснение, Сергей!
Ты очень классно обо всем рассказываешь, очень доступно о таких непростых вещах, однозначно лойсик
Смотрю подряд уже которое видео... становиться не по себе: ведь я все понимаю.
Так быть не должно.
Должно быть трудно, непонятно, насыщено специальным сленгом.
Должно быть с протяжным "Ээээ" и с проглатыванием важных слов.
Так, по-крайней мере, у многих гуру...
Неужели ООП доступно непросвещенным? :)
Спасибо огромное за данный учебный контент, Сергей!
Сергей, спасибо огромное за уроки.
Спасибо за прекрасные уроки!
Первый источник на котором действительно смотришь и понимаешь как оно там все устроено.
Большое спасибо за уроки, они очень полезны, Вы не представляете, как сильно они выручают
супер подача материала главное играючи с юмором эта каряка высший пилотаж !!!
Очень полезные видео. Ты очень хорошо объясняешь и благодаря твоим видео я узнаю для себя новые вещи. Спасибо за твои видео!
привет из 2023, спасибо большое за уроки!
Спасибо, понятно и доходчиво!
Привет с Бауманки, весь Иу6 вас смотрит!
чисто тигр! спасибо за ролики. очень сильно помогают двигаться вперед.
ещё пару таких видео, и я буду также здороваться с друзьями 0:01
Мне при просмотре его видео друг позвонил и я так с ним поздоровался. После чего он меня послал... а он просто хотел пригласить меня на пивко....(
Отличный видеоролик , спасибо!
После c, c#, swift, objc, java... не говорю уже о vb6/net - язык C++ шикарен)
наверно, С++ кажется сложнее....
Спасибо за вашу работу
Спасибо большое! Все понятно!
Спасибо за знания !
Спасибо! Коммент для продвижения!
О, я дошел до читаемого шрифта! Уроки отличные, спасибо!
Спасибо за урок!
Спасибо тебе огромное!! Теперь я разобрался в этом)
Спасибо за урок.
Очень круто бро!
Спасибо за уроки
👍👍Благодаря Сергею я полюбил скучное и непонятное программирование. лекции понятны человеку, который даже и не знаком с программирование, в отличие от многих других спикеров
Большое спасибо за урок
Спасибо!
По-моему ваши видео смело можно и нужно демонстрировать на наших уроках программирования в универе
спасибо, вернулся повторить.
Спасибо тебе большое
Спасибо огромное.
СПАСИБО! Супер!
Очень хорошие уроки!
Спасибо!!!🥰
Лучший канал по программированию
ну само сабой
Просто лучший :)
Как я понимаю, если много объектов, деструктор работает по принципу стека?
+
При создании объектов они попадает в стек процесса. Извлекаются они из этого стека в обратном порядке.
Вот только -что мучался с кодом . Потому , что не знал про это. Спасибо!
СПАСИБО
Спасибо
здравствуйте, хотелось бы узнать, почему когда я изменил в деструкторе data на *data то у меня вывело очень большое число, которое я никаким образом не мог получить (то есть через цикл и прочее)?
Просто спасибо. Хочу отблагодарить, если когда-то всё же удастся сделать себе карьеру в области программирования.
как успехи?
@@vladyatsuk работаю в Нокии, но не программирую, занимаюсь мобильными сетями.
@@bohdanbuchuliak8433 круто!)
Есть ли смысл для массива в деструкторе после delete [] data написать ещё data = nullptr, ну как изучали в тех уроках с переменными?
Вопрос!
Если внутри класса был создан объект через "Умный указатель" например [make_unique], то в таком случае Дин.память очищается автоматически согласно функционалу указателя, или же в классах для этого нужно пользоваться только деструктором??
За ранее благодарю за ответ!!
Спасибо очередной раз!
спасибо
Четко объяснено. Отлично усвоено. Большое спасибо! Лайк+ к 1.1 килолайков!!!
11 человек поставили дизлайки, кто хотел узнать как создать деструктор с параметрами
Лучший
Спасибо!!!
10/10
лучший
НАВЕРНОЕ было бы нагляднее если бы масив был на пару тысяч. И посмотреть что бы было без деструктора, и с ним. Но так, как уже было расказанно про утечку памяти, это можно и опустить, но было бы еще раз интеретно посмотреть).
Спасибо, уроки агонь
У меня возник вопрос, может быть вы знаете ответ? Если деструктор вызывается по умолчанию, даже когда мы его не прописываем, то зачем же его прописывать для динамического массива, деструктор же сам вызовется по умолчанию после выхода из области видимости?
И второй вопрос, если деструктор можно вызвать только один раз, то, что же делать, если надо удалить два объекта или больше?
Заранее спасибо.
👍👍👍👍👏
То есть имеет смысл использовать деструктор только если динамически выделенная память находится под private?
в visual studio 22 года можно самому вызвать деструктор. Почему так?
cool
Спсб
Доброго времени суток,один вопрос,знаете ли вы Sfml?Если да ,то будут ли по нему видеоуроки в будущем?
smfl не самая лучшая библиотека для с++
Подскажете лучше?
Кама Пуля если хочется делать игры то лучше воспользоваться готовым движком. Ну или изучать OpenGL
Готовый движок изучать слишком просто, Опенгл - слишком сложно. SFML - это золотая середина)
Здравствуйте! Скажите, пожалуйста, в чём проблема, если деструктор вызывается больше раз, чем существует объектов? Заранее спасибо!
Не могу вызвать деструктор никак. Среда разработки- Visual studio 2012, что посоветуете?
@@user-rm3ed2lq9d В vs 2017 такая же херня.
Здравствуйте!
Можете кинуть тапком за глупость, но прошу прояснить.
Возьмем код, когда конструктор не принимает никаких значений(5:16): при создании объекта, вид "MyClass a;" вызывает конструктор, а затем и деструктор. Но при записи "MyClass a();" ничего не вызывается (я так понял объект вообще не создается).
Почему так происходит?
вроде бы в обоих случаях запрашивается создание без передачи значений. Я конечно понимаю, что писать скобки тут глупо - интересно в чем разница.
ПС Спасибо Сергею за наиотличнейшие уроки!
Почему не создаётся? MyClass a() - это и есть создание
Дякую
если кто знает, подскажите кнопки для быстрого выделения строки кода
Если создать копию класса, где есть ссылка на выделенную динамическую память, то при удалении такой копии, удалится и динамическая память оригинала, это можно решить с помощью объявления типа указателя на shared_ptr *ptr = new Тип;
получается что деструктор выполняется методом стека
если в конце вставить system("pause"); то диструктор "не вызовится"
деструктор не вызывается.
Сергей, а что за музон на фоне играет?
Ethan Meixsell - Demise
Спасибо большое, и за урок тоже)
Здравствуйте, на 5:45 вы написали в зоне видимости main setlocale, не понятно как конструктор и деструктор это поняли, ведь они находятся в другой зоне видимости
*Ну так в main сначала попадает класс, а точнее его объект. Потом уже с этими знаниями он идёт дальше. Думаю логично, нет?*
@@kiritokun3092 логично
Сетлокэйл всегда пишется в мэйне и всегда выводит норм сообщения
Если после выхода с Foo MyClass a удаляется, а я его дальше в main буду использовать, то что делать?
Создавать класс в мейне и передавать его ссылкой в Foo
Я предполагаю, что если нам нужна какая то инфа в файле, который мы открываем с помощью класса, то после обработки данных этого файла с помощью деструктора можно легко сделать так, чтобы файлы открытые данной функцией автоматически закрывались и дальше об этом вообще не думать (?).
Спасибо огромное! Это мне очень поможет в выполнении моей задачи!
Я конечно не шерлок, но с помощью деструктора можно сохранять данные в файл.
15:51 А будет ли работать оператор delete[], если его прописать в конструкторе класса на строке 127?
По идее да, но только я сижу и туплю... Так же, по идее, delete[] удалит данные массива прежде чем ты их сможешь где-то использовать, вроде так будет
Должен, ведь оператор будет написан после того как создался массив.
Теперь всегда буду тилду называть корякой
А что можете сказать по поводу того, где должен находится конструктор? В public всегда?
Да
Я, конечно, же имел в виду деструктор, а не конструктор. В интернете пишут, что деструктор может быть в секции private, но это более сложный момент, который пока не важен.
@@SaffronChipMCPE Необязательно. Он может быть и private и protected, зависит от того что вы хотите сделать.
Для тех кто столкнулся с проблемой что диструктор не выводит сообщения:
Диструктор срабатывает после завершения программы а именно после Return 0.
Лол, конечно ничего не будет выводиться когда ты завершишь работу проги, разумеется если основное окно программы это не дочерний объект какого-то родительского окна, в которое выводится вся инфа
Что за музыка на фоне? Подскажите название.
Ethan Meixsell - Demise
Народ подскажите плиз,у меня из-за system(" pause") компилятор не показывает деструктор,если уберу показывает ,то на долю секунды ,не успеваю посмотреть.
Ты видимо прослушал в начале видео ремарку об области видимости
Но объясню так: деструктор вызывается, когда функция, в которой создан объект класса, завершает свою работу и выходит из стэка вызова. Т.е. (как я понял) компилятор неявно прописывает последними строчками в функцию, в которой создан объект класса, деструктор для него.(Может это не так, и дописывание происходит на уровне ассемблера, но суть думаю ясна)
В твоём случае system("pause") приостанавливает выполнение функции main() тем самым не позволяя ей закончить свои дела и выйти из стэка.
Если хочешь увидеть деструктор, можешь сделать так: создать отдельную функцию(например Foo()), в ней прописать создание объекта и прочие непотребства, а затем в main'е вызвать Foo(). И, разумеется, после вызова добавь system("pause"), чтоб консоль не закрывалась.
cntrl + f5
@@lennoxmacduff2037 но в видео нет доп. функций, а деструктор то выводится на экран.
@@vitaliizadorozhnyi8101
бля, час ломал голову над этим:D
у него консоль не закрывается из-за отладчика:D
поставь красную точку рядом с return 0;
запусти отладчик ctrl+F5 и нажми step over F10.
там видно что отладчик идет на последнюю строку после return и в итоге показывается как работает деструктор.
Спасибо. Вагон времени мне сохранил. XD
Можно сказать, что Деструктор работает по основа стеко?
Каряка :D
6:57
жесть каша в голове чем дальше ) вроде понял суть классов ну тут конструкторы и тд ппц сразу облом словил (( и как это все запомнить еще в голове уложить одно учишь другое забываешь , у кого то есть такое еще ? хотя по твоим урокам сделал крестики нолики игру ) только без класса про класс еще не знал
Практика. Когда хорошо попрактикуешься в использовании классов без описанных конструктора/деструктора при сознания разнородного простенького, запомнишь лучше основу классов.
Потом уже с конструкторами и деструктором.
Практика буквально укрепляет нейронные связи, так что так...
И так со всем
А деструктор использовается только для освобождения помяти?
Не только. Для любых действий, например, закрытие файла, сокета и т.д.
Не понятно зачем использовать delete, если деструктор удаляет все данные созданные конструктором ?
Вообще да, смысла нету, деструктор вызывается после отработки функции main, но здесь это больше хороший тон программирования в плане того, что, если используешь new, используй delete.
У меня ошибка: "cout" не является однозначным
Такая ошибка возникает, если один из cout вызывается после завершения функции main, вродь
/* Эффект тарелки */
как создать динамический объект?
а что это?