Указатель на функцию в качестве параметра. Передача функции в качестве параметра. С++ Урок #65

Поделиться
HTML-код
  • Опубликовано: 9 фев 2025
  • Понравилось видео или оказалось полезным? Подпишись!
    Указатель на функцию в качестве параметра. Передача функции в качестве параметра. С++ Урок #65
    Уроки по программированию
    Наша группа ВК smplcode
    Подписывайтесь на канал / @simplecodeit

Комментарии • 281

  • @CoolbitsVDA
    @CoolbitsVDA 2 года назад +47

    Стадии просмотра данного видео:
    0:00 Интересно что там у нас сегодня?
    1:58 Опять указатели. Кто-то на кого-то указывает, в голове каша.
    9:23 Вроде все понятно. Только зачем мне указатель на функцию, если я могу вызвать функцию напрямую?
    18:58 Это ахрененно!!!! В очередной раз, спасибо огромное, Сергей!

  • @user-mykyta_vyshniakov
    @user-mykyta_vyshniakov 4 года назад +63

    Data from Astral - повеселило )))) Спасибо за уроки!

    • @korvax_goblin
      @korvax_goblin 3 года назад

      Математическое описание состояния энергетики

    • @setwindowlongptr
      @setwindowlongptr 2 года назад

      что такое astral

    • @MirrorOfLourence
      @MirrorOfLourence 2 года назад +5

      @@setwindowlongptr Астрал и есть. Т.е., полагаю, данные, взятые с потолка)

  • @wlepnoga
    @wlepnoga 7 лет назад +383

    Самый внятный канал о С++!

  • @almosteasys-r3n
    @almosteasys-r3n Год назад +3

    Сергей, я безмерно благодарен вам за ваши уроки! ваш уровень объяснения, превосходен! абстрагирован настолько, что даже самые сложные темы познаются как 2+2

  • @satyrosa
    @satyrosa 2 года назад +79

    Готовлюсь к собеседованию. Впервые слышу об этом. 4 года в универе. 2 самостоятельных проектов. И такое не в первый раз, спасибо!!

    • @francheeze
      @francheeze Год назад +1

      И как?

    • @satyrosa
      @satyrosa Год назад +7

      @@francheeze неудачно, но подозреваю, что это просто неуверенность. Плюс ещё с математикой налажала

    • @francheeze
      @francheeze Год назад +4

      @@satyrosa Это печально

    • @pavel_losev
      @pavel_losev Год назад +1

      ​@@francheezeа что было в самостоятельных проектах не секрет?

    • @francheeze
      @francheeze Год назад

      @@pavel_losev ?

  • @yaroslavvdovenko3482
    @yaroslavvdovenko3482 7 лет назад +135

    Еще не встречал настолько крутых обучалок😊😊

  • @bama2619
    @bama2619 3 года назад +22

    Удобный инструмент! Спасибо. И почему я раньше не смотрел ваш канал? Как заработаю копеечку обязательно закину донат! Народный учитель должен жить хорошо. Большая помощь обществу.

  • @ДмитрийЕвтушенко-к3т

    сначала послышалось калек а не КОЛЛЕГ но по смыслу подходить)))

  • @Dmitrii82
    @Dmitrii82 4 года назад +5

    Весь интернет перелопатил нихрена не понял, только вы можете объяснить доходчиво. Громадное спасибо

  • @ДмитрийКулявец-в5у
    @ДмитрийКулявец-в5у 5 лет назад +16

    Концовочка урока порадовала - данные из астрала))) Но зато всё прекрасно понятно) Спасибо за уроки!

  • @Ermine882
    @Ermine882 7 лет назад +21

    Как всегда спасибо за урок и оперативность.

  • @amd3s
    @amd3s 7 лет назад +29

    Хм, реально крутая фишка!
    Спасибо.

  • @zumaxrussia
    @zumaxrussia 6 лет назад +5

    Спасибо Сергей. Добротное видео. Как в прочем всегда.

  • @sashatim8244
    @sashatim8244 7 лет назад +10

    Круть, 3 месяца изучаю C++ и впервые узнал об указателе на функцию.

    • @nerts4720
      @nerts4720 3 месяца назад

      тоже самое, а у вас видимо уже 6 лет опыта на данный момент😅

  • @antandgen
    @antandgen 7 лет назад +48

    Сергей, добрый день! Во первых хочу поблагодарить Вас за ваш ТРУД, реально очень помогает в освоении С++. У меня огромная просьба. Просьба такая, подскажите как параллельно с изучением С++, еще практически закреплять пройденный материал. Пример: Ваши уроки это ТЕОРИЯ и бывает так, что для полного понимания хочется ПРАКТИКИ, но в силу не большого багажа знаний сложно практиковаться, но практиковаться НАДО. Есть три урока как создать игру "Змея" на основе С++, очень помогло понять до конца как работают функции, ОЧЕНЬ ПОМОГЛИ ВАШИ УРОКИ,может у Вас есть практические уроки для полного понимания. Спасибо.

    • @dmax8622
      @dmax8622 6 лет назад +44

      Вопрос конечно не мне , но отвечу, так как меня это тоже интересовало. Есть две отличные книги : "Сборник задач по программированию" Д.М.Златопольский и "Сборник задач в примерах" Н.Культин. Д.М. Златопольский хорош тем что, все его задачи, в каждом разделе, начинаются с элементарно легких, и ПОСТЕПЕННО усложняются до максимум сложности. А вот Н.Культина, ко всем задачам, в разделах, есть решения. Ну вот как-то так.
      PS.
      Лично мне больше нравится "Сборник задач по программированию" Д.М.Златопольского, мне он ОЧЕНЬ ПОМОГ в изучении С++.

    • @avamnepohui7260
      @avamnepohui7260 6 лет назад +1

      @@dmax8622 Заодно можно подучить и то, что в школе было успешно прогуляно или забыто))

    • @ubermenschliche1319
      @ubermenschliche1319 5 лет назад +1

      Andrey A На канале есть домашние задания по с++

    • @ДониёрРахманов-ч1ю
      @ДониёрРахманов-ч1ю 5 лет назад +1

      @@dmax8622 Спасибо большое,то что надо!

    • @ДанилЛевковский-ц8г
      @ДанилЛевковский-ц8г 2 года назад +1

      @@dmax8622 Спасибо

  • @archiechellaut9483
    @archiechellaut9483 3 года назад +3

    Большое спасибо вам за урок и прекрасное пояснение, Сергей!

  • @Jessica_Cat-l1v
    @Jessica_Cat-l1v Год назад

    Смотрю и радуюсь! Предельно ясно и понятно, в самый раз для чайника))))

  • @vadimturok59
    @vadimturok59 4 года назад

    Автора и по голосу приятно слушать и розжевывает все до мелочей, спасибо!

  • @staspineapple6962
    @staspineapple6962 4 года назад +6

    Весьма доволен собой был до поры до времени:D

  • @timurortskhanov8527
    @timurortskhanov8527 7 лет назад +8

    Наиогромнейшее СПАСИБО. Вы СУПЕР.

  • @АртурНестерук-ж2й
    @АртурНестерук-ж2й 5 лет назад +1

    Я Вас благодарю за Вашу работу, очень хорошо всё объясняете!

  • @Ank2929
    @Ank2929 2 года назад

    Вы первый человек, которому удалось объяснить мне пользу указателей

  • @itstudio3107
    @itstudio3107 3 года назад +6

    Спасибо за наглядный пример. Хотя, мне кажется, стоило пример отрисовать в пэинте - так нагляднее. Я прям чувствую, что понял смысл лишь на половину. Но в любом случае огромное спасибо и за пример, и за урок!

  • @chausovanton
    @chausovanton 4 года назад +12

    Во первых, Огромный респект за канал!
    Такой вопрос: Зачем использовать указатель на функцию, если примерно такого же эффекта можно добиться вот так:
    string DataFromBD()
    {
    return "Data From BD";
    }
    void ShowInfo(string str)
    {
    cout

    • @ДмитрийНормов-ю6ц
      @ДмитрийНормов-ю6ц 2 года назад +13

      указатели позволяют экономить память.

    • @sense5879
      @sense5879 6 месяцев назад

      @@ДмитрийНормов-ю6ц и сколько ты такими методами памяти сэкономишь? Проще уже изначально всё по уму писать и обращать внимание на действительно важные вещи, чем вот так вот синтаксис усложнять. Куева туча скобок и всё слеплено вместе, бред, а ты представь если весь проект такой?

  • @ДмитрийБузницкий-б3н

    Спасибо, Сергей. Как всегда познавательно

  • @АлексФерНорте
    @АлексФерНорте 6 лет назад +2

    Спасибо тебе за твой труд, дружище!

  • @SeshAlex
    @SeshAlex 6 лет назад +7

    Спасибо за урок! Предвкушаю как я сейчас буду издеваться над указателями, может че и придумаю:)

  • @somebuddy1202
    @somebuddy1202 4 года назад

    Огромное спасибо! Очень наглядно и без воды.

  • @LenTos1337
    @LenTos1337 6 лет назад +4

    Спасибо вам большое за урок

  • @pepperyflow
    @pepperyflow 2 года назад

    Спасибо! Помогаете!!!

  • @АртёмЯрошенко-и3е
    @АртёмЯрошенко-и3е 5 лет назад +2

    Очень просто и понятно. Спасибо вам!)

  • @stensej6841
    @stensej6841 4 года назад +1

    спасибо Сергей!

  • @Firuz26
    @Firuz26 7 лет назад +19

    Спасибо

  • @maksinima
    @maksinima 6 лет назад +3

    И как я мог пропустить такой важный урок?? Спасибо вам большое!

  • @bulba1995
    @bulba1995 2 года назад +1

    Классная штука , нужно по практиковаться.

  • @BortMechanick
    @BortMechanick 7 лет назад +13

    спасибо за урок

    • @SimpleCodeIT
      @SimpleCodeIT  7 лет назад +1

      Пожалуйста! =)

    • @hackerman5984
      @hackerman5984 3 года назад

      @@SimpleCodeIT Спасибо за урок,с помощью вас я наконец-то смог программировать на С++. Пересматриваю ваши ролики.

    • @ВладиславМаксимов-р5х
      @ВладиславМаксимов-р5х 3 года назад

      @@hackerman5984 Работаете программистом?

  • @SimpleCodeIT
    @SimpleCodeIT  7 лет назад +12

    #указательнафункцию #SimpleCode #урокипрограммирования

    • @ЧеловекРавнодушный
      @ЧеловекРавнодушный 5 лет назад

      Тут можно и без указателя обойтись. В функцию ShowInfo можно тупо передать функцию...

    • @andreysholmin5863
      @andreysholmin5863 5 лет назад

      @@ЧеловекРавнодушный Я тоже так попробовал, получилось и тогда вопрос, в чем различие указателя на функцию и без указателя передача функции?

    • @ЧеловекРавнодушный
      @ЧеловекРавнодушный 5 лет назад

      Андрей Шолмин, у меня такой же вопрос. Тут либо накосячил автор ролика, либо есть некая принципиальная разница, которую мы поймём в будущем. Я снова пока забросил Си++... Я к нему периодически возвращаюсь... Но если вы раньше меня поймёте, оставьте комментарий прямо здесь... Сохраните ссылку на видео для этого, да и на комментарий тоже...

    • @vovadenys4149
      @vovadenys4149 5 лет назад +6

      ​@@andreysholmin5863 передавая функцию компилятор не лично ее передает а создает ее копию и тогда у вас 1 функция занимает в 2 раза больше памяти (функция и копия). А передавая по указателю вы как бы на прямую работаете с функцией. Вроде как то так) поправте если чо

    • @vovadenys4149
      @vovadenys4149 5 лет назад +2

      @@ЧеловекРавнодушный передавая функцию компилятор не лично ее передает а создает ее копию и тогда у вас 1 функция занимает в 2 раза больше памяти (функция и копия). А передавая по указателю вы как бы на прямую работаете с функцией. Вроде как то так

  • @melmenx
    @melmenx 5 лет назад +2

    Я понял это так. Есть несколько функций. Чтобы вызвать одну нам необходимо создать функцию, параметром которой является указатель на функцию.
    void ShowFun(string(*pFoo)()) // функция, параметром которой является указатель на функцию
    {
    cout

  • @learning4702
    @learning4702 2 года назад

    Спасибо за видео, узнал для себя новую возможность С++)

  • @shahriyorturayev311
    @shahriyorturayev311 2 года назад

    eng zo`r kanal sizga rahmat

  • @VideobufferGoPro12-kn2ok
    @VideobufferGoPro12-kn2ok 9 месяцев назад

    Даже коммент напишу, очень качественно объяснено👍👍👍

  • @Rueslan
    @Rueslan 7 месяцев назад

    Топ объяснение делегатов. Нисмотря на то что данные берутся из астрала)

  • @alexxxusxxi
    @alexxxusxxi 6 лет назад +2

    Для закрепления материала
    Массивы указателей на функции. Обычные и динамические.
    Чтобы усложнить задачку функция, передаваемая в виде аргумента в другую функцию, так же принимает параметр.
    В конечном итоге передача указателя на функцию в качестве параметра другой функции в цикле из массива таких указателей :)
    Внизу есть пара вопросов, буду признателен, если получу на них ответ.
    #include
    #include
    using namespace std;
    // функции, которые я буду использовать в качестве примера
    string GetDataFromDB(string DBName)
    {
    return "Data From DB: " + DBName + "
    -----------
    " + "Record1
    Record2
    Record3
    ...
    ...
    ...
    RecordsN

    ";
    }
    string GetDataFromWebServer(string ServerName)
    {
    return "Data From WEB-Server: " + ServerName + "
    -----------
    " + "WEB1
    WEB2
    WEB3
    ...
    ...
    ...
    WEBN

    ";
    }
    string GetDataFromUser(string UserName)
    {
    return "Data From User: " + UserName + "
    -----------
    " + "UserData1
    UserData2
    UserData3
    ...
    ...
    ...
    UserDataN

    ";
    }
    string GetDataFromSkype(string NickName)
    {
    return "Data From User: " + NickName + "
    -----------
    " + "SkypeData1
    SkypeData2
    SkypeData3
    ...
    ...
    ...
    SkypeDataN

    ";
    }
    // объявлю и константу, чтоб с ней поиграться
    const int SIZE = 4;
    string(*GetData_addresses[SIZE])(string SRC) = {&GetDataFromDB, &GetDataFromWebServer, &GetDataFromUser, &GetDataFromSkype };
    // вместо адресов при перечислении элементов массива можно указать просто имена (указатели) функций
    string(*GetData_fun_names[SIZE])(string SRC) = { GetDataFromDB, GetDataFromWebServer, GetDataFromUser, GetDataFromSkype };
    // смешанное перечисление
    string(*GetData_mixed[SIZE])(string SRC) = { GetDataFromDB, GetDataFromWebServer, &GetDataFromUser, &GetDataFromSkype };
    void ShowInfo(string SRC, string (*fooPtr)(string str))
    {
    cout

    • @lacklacktriplehack4174
      @lacklacktriplehack4174 4 года назад

      заранее сорри за некропостинг
      // 1. почему объявление такое же, как у двумерного массива?
      я не уверен но может это из-за того что мы создаем массив с указателями на функции? тобишь по факту это указатель на указатели на функции
      потому и объявление как у двумерного массива
      берем адреса для ячеек а в них пихаем указатели для функций

    • @artem_zar
      @artem_zar 2 года назад

      друг друг, стой. Ты не на стековерфлоу зашёл, успокойся немного хахаххаа

  • @NoRussiaNoCry
    @NoRussiaNoCry 2 года назад +13

    Як нечакана і прыемна было даведацца, што аўтар гэтага выдатнага каналу з роднай Украіны...
    Дзякуй вялікі за працу і трымайцеся, сябры!

    • @ДанилЛевковский-ц8г
      @ДанилЛевковский-ц8г 2 года назад +3

      Частенько встречаю талантливых прогеров из Украины. Не так давно один мой друг, переехал в Канаду и теперь работает там. Видимо тоже не плохой специалист.

    • @АлексейДоровской-х2ъ
      @АлексейДоровской-х2ъ Год назад +1

      Интересный у тебя ник). Раз ты так переживаешь за свою родину, то че на фронте-то не защищаешь ее? Или у тебя "активная" политическая позиция только в интернете? Хотя может тебя уже мобилизовали и ты сейчас лежишь-гниешь в поле где-нибудь под Артемовском...

    • @illiahimself
      @illiahimself Год назад +1

      @@АлексейДоровской-х2ъ ты еблан? это беларуская мова

  • @kadyshev2759
    @kadyshev2759 5 лет назад +6

    9:55 Трудно представить
    *Спасибо за урок*

  • @АлександрЛитвинюк-х2ы

    Спасибо за знания !

  • @slimbdeful
    @slimbdeful 6 лет назад +1

    Очень важная тема!

  • @aleksandrdrobyshev7623
    @aleksandrdrobyshev7623 4 года назад +124

    Старина, ты неправильный программист, значешь почему? Потому, что правильные програмисты не умеют объяснять :) Они всегда все объяснят так, буд-то тот, кому объясняют- уже и так все сам знает, как-бы как профессору экзамен сдают. В результате нихрена не понятно.
    Ты круто объясняешь, особенно когда с пэйнтом, не забывай про него.
    По поводу урока, я тебе верю, что это очень важно, и полезно, но нихрена не понял. :LOL:
    Т.е. какие-то наметки в голове есть, как работает вроде понятно, но зачем...
    Может кто попробует мне пример привести использования. Только не приводите пример в стиле "представь, что ты пишешь софт для СпейсШаттла".. ребят, если это уроки для чайника- чайник даже представить себе не сможет, что такое код для какого-то межгалактического монстра.
    П.С. побольше домашки, она заставляет думать. Даже простая, она заствляет самому проделать показанное на уроке.

    • @abdussattarkassymbekov3643
      @abdussattarkassymbekov3643 4 года назад +62

      Ну как-то раз, я делал так скажем свой "пейнт", только писал его не на С++, а JS, там тоже есть что-то похожее на эти указатели на функцию. Ближе к делу, нужно было чтобы когда пользователь нажимал на кнопку с прямоугольником, то он мог рисовать прямоугольник, а когда нажимал на кнопку с кругом, то рисовал круг. Реализация была такова: должна быть ОДНА функция (назовем ее draw), которая вызывается когда пользователь нажал на мышку и эта функция позволяет пользователю рисовать все фигуры которые ему доступны, но пока не совсем понятно как эта функция определяет что ей рисовать, а на самом деле это не совсем функция, это указатель на функцию, который меняется в зависимости от того на что нажал пользователь. То есть у нас есть указатель на функцию который называется draw, и он меняется от того на что мы нажали, допустим мы нажали на кнопку прямоугольника, и теперь draw указывает на функцию drawRect, которая специально написана чтобы рисовать прямоугольник, если нажали на круг, то draw указывает на drawCirclе, которая написана чтобы рисовать круг. В итоге выходит что мы вызываем один и тот же указатель на функцию, а он в свою очередь указывает на разные функции, которые могут делать абсолютно любые вещи. Мы просто обращаемся к этому указателю когда кто-то начал рисовать, и меняем функцию на которую он указывает когда, например с прямоугольника на круг или на просто линию. И еще нам в будущем может взбредить в голову дать возможность рисовать еще больше фигур, ну допустим треугольник, ради этого мы можем просто функцию drawTriangle написать, и потом добавить кнопку рисования треугольника, когда нажимаем на эту кнопку просто говорим что теперь draw указывает на drawTriangle. Не уверен что смог донести, если все еще слабо себе представляете, то я бы рекомендовал написать свой пейнт на JS тоже, это не так сложно как кажется, я написал это с 5-6 месячным опытом в JS.

    • @viktort9326
      @viktort9326 4 года назад

      Если коротко. Для чего нужна ф-ция? Чтобы в зависимости от переданных в неё параметров, получить определённый результат. Допустим ф-ция сложения. А теперь представь, что в эту ф-цию сложения ты передаёшь результаты полученные из других ф-ций. Неважно каких. Тебе главное сложить их результаты.

    • @МаксимШлык-б8т
      @МаксимШлык-б8т 3 года назад +2

      @@abdussattarkassymbekov3643 И зачем это надо Вы поясните? всё равно есть функции код которых рисует треугольник или квадрат или иное так почему же нельзя просто в зависимости от того на что нажали вызвать соответствующую функцию?

    • @abdussattarkassymbekov3643
      @abdussattarkassymbekov3643 3 года назад +4

      @@МаксимШлык-б8т в случае если мы не будем использовать указателей на функцию, то я самым простым способом вижу так сделать. Когда я нажимаю на кнопку "рисовать треугольник" я меняю значение глобальной переменной на 1 (чтобы понять что сейчас надо рисовать) потом когда пользователь хочет рисовать что-то, то я просто проверяю значение этой глобальной переменной и в зависимости от этого рисую что-то. То есть тут используется if else конструкция, а писать много if else это не очень приятно как и читать лес из if else. Чтобы избавится от них можно использовать указателей на функцию, как мне кажется это более правильное решение и более понятное. Наверное чтобы хорошо понять это стоит поделать задачи на переопределение методов класса в ООП.

    • @abdussattarkassymbekov3643
      @abdussattarkassymbekov3643 3 года назад

      @@viktort9326 как вариант чтобы не дублировать код, возьмем функцию сложение векторов, можно написать только один раз эту функцию потом использовать по многу раз, даже тот же самый вывод на консоль это функция, если бы не было его то пришлось всю логику вывода на консоль писать каждый раз когда потребуется

  • @ИвановАндрей-ш5м
    @ИвановАндрей-ш5м 6 лет назад +2

    Очень крутой урок, спасибо большое!

  • @lossofsoul3693
    @lossofsoul3693 10 месяцев назад

    DataFromAstral это сильно :)))
    Мой универсальный препод по программированию все время называл тестовые переменные doloto1, doloto2... :)

    • @lossofsoul3693
      @lossofsoul3693 10 месяцев назад

      string GetDataFromAstral(double mercuryPosition) {
      return DoMagic(mercuryPosition)
      }

  • @kvizyx636
    @kvizyx636 3 года назад

    Большое вам спасибо!)

  • @arzamas1988
    @arzamas1988 Год назад

    Я постоянно юзаю указатеди на функци в машине состояний. Есть энамы, описывающие события и текущее состояние. Есть двойной массив, который содержит указатели на функции. Комбинацией значений событие и текущее_состоянте формируется индекс (x и y) и выбирается нужная функция. Коряво объяснил. Но инструмент очень удобный.

  • @АртурГребешков-к6ж
    @АртурГребешков-к6ж 6 лет назад +3

    Спасибо!

  • @ДавидМархевка-л5й

    крутая вещь, спасибо.

  • @sardorkhuja
    @sardorkhuja 5 лет назад

    Очень понятно все объяснил, спасибо

  • @randorteam3122
    @randorteam3122 3 года назад

    ставлю лайк, спасибо за ваши уроки)😀

  • @МарияАксенова-о9к
    @МарияАксенова-о9к 3 года назад

    лучший, огромное спасибо

  • @nap0le0nb0naparte7
    @nap0le0nb0naparte7 7 лет назад +3

    Круто!!!

  • @РусланКарнеенко
    @РусланКарнеенко 8 месяцев назад

    Cпасибо

  • @ЕвгенийВасильев-и3п
    @ЕвгенийВасильев-и3п 4 года назад +2

    Ёлки-палки. Смотрел многопоточное программирование, а там сказали какой-то урок про лямбду посмотреть для понимания. Стал смотреть про лямбду, там сказали посмотреть про полиморфную обертку. В полиморфной обертке отправили сюда и еще куда-то про цикл foreach... Короче, обход дерева в глубину

    • @ЕвгенийВасильев-и3п
      @ЕвгенийВасильев-и3п 4 года назад

      Линейный список. (как открыть ларёк): ...через 2 дня пришел. Сказали, я слишком худой - надо пойти поесть, чтобы 2 дня не есть, чтоб потом сдать кровь, чтоб жизнь страховать, чтоб прийти в банк, чтоб прийти в ЗАГС, чтоб пойти в ЖЭК, чтобы пойти в УВД, чтоб пойти в МОСГОСТРАНС, чтоб пойти в УПРАВУ, чтоб пойти в БТИ, чтоб пойти в ФНС, чтобы открыть ларёк...

    • @abdussattarkassymbekov3643
      @abdussattarkassymbekov3643 4 года назад

      забавная ситуация)

  • @Viktor_Kardakov
    @Viktor_Kardakov Год назад

    Со второго раза понял о чём речь, спасибо!

    • @user-8454null
      @user-8454null Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

  • @borisfrolov1046
    @borisfrolov1046 Год назад

    Полезно и понятно)

    • @user-8454null
      @user-8454null Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

    • @hatred58
      @hatred58 Год назад

      @@user-8454null о нет!! об этом явно нельзя молчать!!!!!!!!!!

    • @user-8454null
      @user-8454null Год назад +1

      @@hatred58 В смысле?

    • @hatred58
      @hatred58 Год назад

      @@user-8454null чувак тебе самому норм об этом в каждом комменте писать?))

    • @user-8454null
      @user-8454null Год назад

      @@hatred58 Пока не дождусь ответа

  • @ДанилЛевковский-ц8г

    Ожидал, что пример будет по функции rand(); Мне кажется она реализована по тому же принципу и ссылается видимо на srand(); учитывая что вторая расширяет функционал первой.

  • @Непрофессионалымы

    чел, мне очень обидно за Тебя. Такой огромный, качественный труд, а теперь убрали монетизацию. это треш. Дай Бог Тебе здоровья. это зачтется. Я вчера проходил собес на джуна, жду ответ, думаю что все хорошо. Учился на Твоих видосах. спасибо

    • @DaniilS98
      @DaniilS98 Год назад

      Работаешь уже?)

    • @Непрофессионалымы
      @Непрофессионалымы Год назад

      @@DaniilS98 угу)

    • @DaniilS98
      @DaniilS98 Год назад

      @@Непрофессионалымы слушай, а ты с c++ начал? Расскажи плиз как вообще учился че делал

    • @Непрофессионалымы
      @Непрофессионалымы Год назад +2

      @@DaniilS98 изначально учился на java . javarush ресурс был такой. в рамках интересов начал работать с arduino и есп. где то год пилил свои проекты и изучал ардуино. вообще она стала такой прослойкой для меня между java и c++. потом возникли сложности с трудовой деятельностью и нужно было выбирать дальнейший путь и профессию. решил учиться на c++. посмотрел этот канал, попрактиковался и вылез на hhru. получил около 50 отказов и грубо говоря 51 взяли на работу. почему не остался на java? потому что просто больше понравились плюсы

    • @Непрофессионалымы
      @Непрофессионалымы Год назад +2

      @@DaniilS98 но самое главное я очень очень много писал. безобразного и отвратительного кода, который все-таки работал, но показывать который стыдно. без этого никак не научишься. нужно придумать себе проект и реализовывать его от начала и обязательно до конца. в какой-то момент поймешь что пришло время показать себя

  • @ANDRUSHKAGAMING228
    @ANDRUSHKAGAMING228 6 лет назад +1

    Спасибо, толково ))

  • @sixaxisization
    @sixaxisization 2 года назад +2

    Так они все возвращают string....в качестве аргумента суем string и все... Нет? showInfo(string str){cout

  • @Тэдифан
    @Тэдифан 2 года назад

    Очень класные видео спасибо за контент

  • @gagikarakelyan6014
    @gagikarakelyan6014 4 года назад

    Спасибо.

  • @verbof2527
    @verbof2527 3 года назад

    Круто, полиморфизм в процедурном стиле)

  • @donrumata5299
    @donrumata5299 5 лет назад +2

    Полезная функция

  • @Blade_Ruiner
    @Blade_Ruiner 3 года назад +2

    Код становиться чище, но все равно необходимо написать так же условие передачи функции. =) Но так код хоть оптимизирован

  • @ide9827
    @ide9827 Год назад

    автор красавчик неимоверный ура

    • @user-8454null
      @user-8454null Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

    • @ide9827
      @ide9827 Год назад +1

      @@user-8454null в любом случае, раньше я не знал про это вообще ничего, а теперь знаю что такая штука в принципе существует и смогу ей воспользоваться на плюсах при необходимости
      это круто

  • @Kopatych69
    @Kopatych69 3 года назад

    Неплохо было б подать в качестве аргумента массив указателей на функцию и последовательно исполнять их.

  • @АлександрЯркин-й9я
    @АлександрЯркин-й9я 4 года назад +3

    Вернулся пересмотреть после видео с абстрактными классами :)

  • @ИоаннДейкун
    @ИоаннДейкун 2 года назад

    привет из 2023. Спасибо большое за уроки!"

  • @DimDsgn
    @DimDsgn 25 дней назад

    )) опять же я все равно мог бы вызвать все эти функции напрямую из мейна😄

  • @aln9391
    @aln9391 7 лет назад +1

    Я в своё время сформулировал для себя, что имя функции это её метка или адрес. Вызов через косвенную адресацию.

  • @aleksandercross5936
    @aleksandercross5936 5 лет назад

    Спасибо, сижу блин в академии тема: Лямбда выражения, препод как-то поверхностно объяснил. Вот сначала посмотрел про указатели на функции)

  • @artugun1
    @artugun1 Месяц назад

    Мне кажется или это рудимент с каких то давних пор, внятного примера, где это может быть использовано, я не увидел. Хотя мне понравился пример у ChatGPT, как использование массива команд, хотя всё ровно сомнительно:
    string GetFromNetwork() {
    return "Data from Network";
    }
    int main() {
    string(*sources[])() = {DataFromBD, DataFromFile, GetFromNetwork};
    for (auto source : sources) {
    cout

  • @vandyke2035
    @vandyke2035 4 года назад +2

    Приведено 2 варианта реализации: 1й Вариант - определяет ссылку на функцию, и нет возможности в эту ссылку добавить реализацию через {} - к примеру то же действие вывода на экран - cout, 2й вариант - в конце - создает функцию в которой есть своя реализация внутри { cout...} с вызовом по ссылке функций Data..., однако, без возможности передачи параметров. Вообщем не не вижу для себя удобства - так как если создавать свою функцию, то зачастую нужно передавать параметры в вызываемые по ссылке функции. А если мы внутри main создаем эту конструкцию - то тогда и ссылок ненадо - прямые обращения к функциям быстрее и короче

    • @danielvladimirov7077
      @danielvladimirov7077 3 года назад

      Van Dyke, полностью согласен! Реализовать 2 вариант с передаваемыми параметрами можно , но супер не удобно. Так что по сути ваше утверждение полностью верно, намного быстрее и читабильнее вывести функцию напрямую.

  • @neokroaton7130
    @neokroaton7130 8 дней назад

    Я почти начал ругаться матом на эти указатели ... Но тут Серый открыл занавес и показал пример На какое то время я спокоен 😂

  • @alexyakoveno4682
    @alexyakoveno4682 2 года назад

  • @mikesteinar2713
    @mikesteinar2713 4 года назад +2

    Cергію. Після спроб дізнатись щось на інших каналах, на #SimpleCode повертаюсь немов додому. Дякую!

  • @_drevn1y_
    @_drevn1y_ Год назад

    super

    • @user-8454null
      @user-8454null Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

    • @_drevn1y_
      @_drevn1y_ Год назад

      @@user-8454null ну и

    • @user-8454null
      @user-8454null Год назад

      @@_drevn1y_ Ну и почему?

    • @_drevn1y_
      @_drevn1y_ Год назад

      @@user-8454null он хотя бы за бесплатно учит, и столько времени уделяет чтоб другие поняли

  • @АртимаркШильд
    @АртимаркШильд 2 года назад +1

    Сергею, большое спасибо за уроки!
    Вопрос к знатокам.
    Как быть, если "сторонняя" функция принимает аргументы?
    Допустим:
    string foo1 (int x); (возвращает строку с х в конце)
    string foo2 (int x);
    то вот так уже не работает,
    void GetFrom (string (*foo)(int x))
    {
    cout

    • @Сергей-т9д7в
      @Сергей-т9д7в 2 года назад

      Именно так, с дополнительным аргументом. GetFrom(string(*foo)(inx x), int x) {};
      И вызов соответственно GetFrom (foo1, 42);
      Если вам не нравится такой способ передачи данных в функцию, то нужно представить себе, каким он должен быть по вашему разумению, и попытаться реализовать. К примеру использовать переменные-буферы в общей зоне видимости. Ну или побороть чувство чего-то не того между (foo1(42)) , в случае которого вы сразу передаете результат работы функции foo1 (т.е. стринг) , и (foo1,42) - смотрите, даже на один знак меньше требуется)

    • @АртимаркШильд
      @АртимаркШильд 2 года назад

      @@Сергей-т9д7в , спасибо большое за ответ.
      Буду разбираться.

  • @РустамКаримов-х6щ
    @РустамКаримов-х6щ 6 лет назад +2

    Читайте Подбельского... там все тоже самое из прошлого века. Ну и скажу что это очень давно придумано в С++ (на самом деле использовано в с++ как и ООП) как и многое другое... Указатели на функции очень круто использовать для меню... поспорил как-то в прошлом веке кто напишет определенное меню на с++ или визуал бейсик.. типа.... я чуть ли не в блокноте на с++ напишу меню... либо среда визуал бейсик (с подсказками). на один день опоздал... проиграл спор (три дня на задачу вне работы.) Но я показал оппоненту... что как за пять минут расширить функционал меню за счет указателей на функции, когда ему пришлось бы тоже самое сделать опять за три дня... с тех пор началась моя любовь к с++.

  • @antandgen
    @antandgen 7 лет назад +11

    Подскажите плис. Поделитесь опытом как закреплять пройденный материал. Очень похоже на то, как будто ощущаешь себя каким-то пассажиром. Всё вроде понятно, проходит время и .....

    • @aln9391
      @aln9391 7 лет назад

      Перемешивать обработчики прерываний в микроконтроллера удобно

    • @nukacake13
      @nukacake13 5 лет назад +4

      если ты мало чего запоминаешь - заведи тетрадь/блокнот

  • @qqorvex
    @qqorvex 7 лет назад +3

    Спасибо за уроки. А работа с файлами будет?

  • @BrownAleks
    @BrownAleks 5 лет назад

    Огромное спасибо! Да.. я из этого урока зачерпнул полезного. Но вопросы остались: Каким образом возможно протащить параметры различных типов, через эту связку? Что бы параметры можно было задать в функцию ShowInfo(), потом какую то их часть обработать в её теле, какую то в теле конечных функций.

    • @Miiazzma
      @Miiazzma 2 года назад

      Ну думаю на ответ с различными типами данных в параметре помогут шаблонные функции, а вот на второй вопрос к сожалению ответа дать не могу

    • @BrownAleks
      @BrownAleks 2 года назад +1

      @@Miiazzma как вы думаете? я за два года нашёл ответы на свой вопрос? или нет? 😅

    • @shokweiv
      @shokweiv 2 года назад

      @@BrownAleks да?

  • @etniqa3638
    @etniqa3638 6 лет назад +15

    Как только заработаю первые деньги с программирования, кину половину тебе

    • @vitusink6445
      @vitusink6445 5 лет назад +3

      Это будет не много, давай ты подкопишь годик-другой а потом кинешь :)

    • @gnog4627
      @gnog4627 4 года назад +1

      Извини, но это звучит так высокомерно.

    • @baki-taki
      @baki-taki 4 года назад

      Ну как, заработал и кинул? Или пошёл в другом направлении, любопытно очень

    • @etniqa3638
      @etniqa3638 4 года назад +1

      @@baki-taki уже пошел на стажировку по фронту, но начался карантин и ее перенесли. Постараюсь, чтобы взяли. Писал на spring boot и angular курсовую, если интересно.

    • @Matissed
      @Matissed 4 года назад

      Steve фронт это же не c++, как твой путь сложился, расскажи

  • @channelworld5687
    @channelworld5687 3 года назад

    Ржал от "дата из астрала"))))

  • @shaman4946
    @shaman4946 2 года назад +1

    Спасибо за урок!!! А может кто-нибудь подсказать как сделать так чтобы пользователь не вводил ShowInfo(DataFromBD); ручками в коде, а чтобы он, например, вводил в консоли DataFromBD и ему выходили данные?

  • @JohnSmith-es2fh
    @JohnSmith-es2fh 2 года назад

    такой момент, а можно ли сделать перегрузку функции, которая принимает функцию через указатель
    (как пример: одна функция принимает обычные функции, а другая - функции с указателями)

  • @mannas273
    @mannas273 4 года назад +9

    чет я встярл с этими указателями. понимаю вроде , а потом все исчезает из памяти

  • @vovadenys4149
    @vovadenys4149 5 лет назад +2

    5:38 fooPointer = foo; ? операцию взятия адреса не надо как для переменных? fooPointer = &foo;

  • @woltmetr
    @woltmetr Год назад

    через консоль можно вызвать нужную функцию?

  • @СергейСергиевский-ц1ц

    Архангельский просто отдыхает.

  • @Bogelma
    @Bogelma 4 года назад +1

    а делегаты в С++ есть?

  • @sealkeen
    @sealkeen 6 лет назад

    15:28 самое неприятное, что большинство людей так и делают, просто берут и дописывают херову тучу кода) Что первым в голову приходит, то и делаем. без вниканий в то, что существуют паттерны программирования, без попыток облегчить жизнь себе и другим программистам... Программисты... они же, типа, должны головой своей думать, придумывать всякие вещи изощрённые... Зачем же он работает, если всё можно было сделать проще простого? Убивает, конечно, такой подход...

  • @sambobeach
    @sambobeach 7 лет назад

    Здраствуй, после месяца(или чуть больше) использования visual studio, мне пришло уведомление" лицензия закончиться через 5 дней. Смогу ли я пользоваться програмой через 5 дней?

    • @timurortskhanov8527
      @timurortskhanov8527 7 лет назад +1

      А я по незнанию удалил. Думал скачал платную версию. И скачал заново. Как я недодумался спросить :))