Дружественные функции и классы пример. Для чего используются. Как определяются. Для двух классов #88

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

ความคิดเห็น • 101

  • @НиколайПокровский-р6в
    @НиколайПокровский-р6в 7 ปีที่แล้ว +191

    Счас смотрю уроки от GeekBrains по C# и твои одновременно по С++....и что хочу сказать, качество твоих уроков определенно выше.....и объясняешь намного понятнее,спасибо)

    • @АндрейЧакалов-б4т
      @АндрейЧакалов-б4т 7 ปีที่แล้ว +14

      Я согласен. Тоже смотрел курс по C# на GeekBrains...Ничего не понятно. А SimpleCode разжевывает все детально, минимум вопросов остается или нет вообще.

    • @alexdi5423
      @alexdi5423 6 ปีที่แล้ว +10

      Сергею надо на GeekBrains устроиться, и денег поднимет и качество курсов там.

    • @sheldon3705
      @sheldon3705 5 ปีที่แล้ว +8

      Просто может тебе не нужно было записываться на курсы от GeekBrains? Так намного проще.

    • @ЕвгенийЗубков-б7о
      @ЕвгенийЗубков-б7о 4 ปีที่แล้ว

      Сколько курс стоит?

    • @tp_pumba602
      @tp_pumba602 ปีที่แล้ว

      @@ЕвгенийЗубков-б7о как почка

  • @Jessica_Cat-l1v
    @Jessica_Cat-l1v 10 หลายเดือนก่อน +4

    Сергей - преподаватель по призванию!!! Я уже почти 2 месяца учусь по его курсам и что хочу сказать - это
    так прикольно💣👍👍

  • @KurvaPsina
    @KurvaPsina 4 ปีที่แล้ว +35

    то самое чувство когда посмотрел пару твоих видосов и написал курсач. чел, ты классный

  • @РомаСелюжицкий-э1щ
    @РомаСелюжицкий-э1щ 5 ปีที่แล้ว +81

    Во Фрэнд зоне оказывается не всегда плохо быть)) Урок как и все прошлые 87 штук лучшее!

    • @evenlee4956
      @evenlee4956 หลายเดือนก่อน

      вахвахвах

  • @smartninspired3857
    @smartninspired3857 5 ปีที่แล้ว +34

    Сергей, вы прирожденный преподаватель!!!! спасибо Вам!!!

  • @SimpleCodeIT
    @SimpleCodeIT  7 ปีที่แล้ว +29

    Дружественные функции и классы пример. Для чего используются. Как определяются. Для двух классов. C++ Для начинающих. Урок#88

    • @ЗаМир-ж4з
      @ЗаМир-ж4з 7 ปีที่แล้ว

      #SimpleCode помогите решить задачу "розробіть програму,яка скорочує дріб.Чисельник та знаменник дробу(цілі числа) вводиться з клавіатури.Використовувати для цього функцію обчислення найбільшого спільного дільника двох натуральних чисел"(извиняюсь,за то что не перевёл ,не знаю как с украинского на русский) помогите написать эту программу на языке С++

  • @SimpleCodeIT
    @SimpleCodeIT  7 ปีที่แล้ว +11

    #дружественныефункции #ООП #SimpleCode #урокипрограммирования

  • @nap0le0nb0naparte7
    @nap0le0nb0naparte7 7 ปีที่แล้ว +39

    Хорошая эта вещь - Дружественная функция=)) Спасибо Сергей!!! предельно понятно.

  • @vladalu9794
    @vladalu9794 6 ปีที่แล้ว +12

    Спасибо, очень интересно!

  • @shigo123
    @shigo123 4 ปีที่แล้ว +4

    Учу уже почти 8 месяце C++ , книги плюс ваши видео на втрой круг ! И только сейчас начла понимать что к чему потихоньку ! Где ты ещё работку взять что бы хоть какие то программы начинать писать с коллективом !?

  • @olegbocharnikov950
    @olegbocharnikov950 6 ปีที่แล้ว +5

    СПАСИБО !!!!
    я ее немного изменил сделал без гетеров и сеторов
    #include"pch.h"
    #include
    #include
    #include
    using namespace std;
    /*
    дружественные функции
    */
    class point
    {
    //доступно всем
    public:
    //недоступно
    private:
    int x;
    int y;
    int z;
    /*
    разрешить данной функции быть дружественной
    она работает в абсолютно любых полях класса
    */
    friend void changex(point & value);
    /*
    разрешить данной функции быть дружественной
    она работает в абсолютно любых полях класса
    */
    friend int dostup(point & value);
    };
    int kol = 1;
    // разрешенная дружественная функция
    void changex(point & value)
    {
    value.x = rand()%100;
    value.y = rand() % 100;
    value.z = rand() % 100;
    }
    int dostup(point & value)
    {
    cout

  • @youjustillusion536
    @youjustillusion536 4 ปีที่แล้ว +4

    Учиться по вашим урокам - одно удовольствие)

  • @ИльяЯкобсон-ю7ж
    @ИльяЯкобсон-ю7ж 4 ปีที่แล้ว +4

    Уххх, забористые алгоритмы написания пошли, спасибо за разъяснение!

  • @poroh3646
    @poroh3646 6 ปีที่แล้ว +10

    Большое спасибо, часто после умных книжек смотрю ваши видео для наведения порядка в голове. Прочитала у лафоре про friend и не въехала, зачем вообще всё это нужно. Теперь всё встало на свои места

    • @ИванИванов-й7и5э
      @ИванИванов-й7и5э 6 ปีที่แล้ว

      А как в целом Лафоре?

    • @crypto_v1p
      @crypto_v1p 2 ปีที่แล้ว

      Я после Лаффоре сюда пошёл 😂

    • @Kalin_cheetah
      @Kalin_cheetah ปีที่แล้ว

      Я тоже после Лафоре. У него не очень понятно описано. Но там приводится интересный подход использования таких функций применительно операторных функций. Через friend-функции можно сделать так, чтобы, допустим, operator+ принимала два аргумента. Потому что в обычном виде операторная функция принимает либо 0 аргументов для унарных операций либо 1 аргумент для бинарных. Если непонятно написал, могу позже дописать.

  • @dabman2341
    @dabman2341 5 ปีที่แล้ว +16

    Специально не пропускаю рекламу. Хотя бы так отблагодарю за труд

  • @АндрейМеньшиков-е5ь
    @АндрейМеньшиков-е5ь ปีที่แล้ว

    прихожу после уроков Нетологии как к репетитору- сюда ! Вы просто мега-мозг, Сергей!

  • @АртёмРудницкий-д5ъ
    @АртёмРудницкий-д5ъ 3 ปีที่แล้ว +10

    Большое спасибо за урок! Правда, пересмотрел очень много всяких разных, но вы рассказываете на очень высоком уровне! Всё предельно ясно и чётко, отдельно хотелось бы сказать за подробности и за то, что регулярно проговариваете всякие мелочи и вроде бы простые и очевидные вещи, которые уже могли обсуждаться в прошлых уроках. Это очень важно, потому что именно постоянное упоминание и осознанное их использование делает их простыми :)
    Подскажите только один момент, пожалуйста, я мог прослушать, классы Point и Test можно назвать в данном случае дружественными?
    Что определяет дружественные классы, их упоминание друг в друге?
    Заранее спасибо за ответ! =)

  • @Ermine882
    @Ermine882 7 ปีที่แล้ว +15

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

  • @Evgeny..
    @Evgeny.. 4 ปีที่แล้ว +4

    Как всегда отличный урок, спасибо!))

  • @musicspace8894
    @musicspace8894 3 ปีที่แล้ว +1

    Лайк Автоматом!

  • @alivewel
    @alivewel ปีที่แล้ว

    Отличный урок. Спасибо!

  • @piotrusyi
    @piotrusyi 3 ปีที่แล้ว

    Благо дарю!

  • @ИванКозловский-ш9н
    @ИванКозловский-ш9н ปีที่แล้ว +1

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

  • @olegbocharnikov950
    @olegbocharnikov950 6 ปีที่แล้ว +3

    ЭТО КРУТОО !!!!! Я В УДАРЕ
    #include"pch.h"
    #include
    #include
    #include
    using namespace std;
    /*
    дружественные функции
    */
    class point;
    class test
    {
    public:
    private:
    int data = 0;
    friend void changex(point & value, test & testvalue);
    friend int dostup(point & value, test & testvalue);
    };
    class point
    {
    //доступно всем
    public:
    //недоступно
    private:
    int x;
    int y;
    int z;
    /*
    разрешить данной функции быть дружественной
    она работает в абсолютно любых полях класса
    */
    friend void changex(point & value,test & testvalue);
    /*
    разрешить данной функции быть дружественной
    она работает в абсолютно любых полях класса
    */
    friend int dostup(point & value,test & testvalue);
    };
    // разрешенная дружественная функция
    void changex(point & value, test & testvalue)
    {
    value.x = rand()%100;
    value.y = rand() % 100;
    value.z = rand() % 100;
    testvalue.data ++;
    }
    int dostup(point & value,test & testvalue)
    {
    cout

  • @vladimirdiadichev6140
    @vladimirdiadichev6140 7 ปีที่แล้ว +5

    Спасибо

  • @bama2619
    @bama2619 2 ปีที่แล้ว +1

    Спасибо, как всегда все круто объяснил! Спасибо! реализую контейнеры STL и разбираюсь c friend

  • @sgimancs
    @sgimancs 5 ปีที่แล้ว +2

    Идеальное качество рус. уроков для плюсов и ООП. Поэтому дизлайки здесь не возможны с учетом соотв. уровня автора.

  • @БогданаДана-у4р
    @БогданаДана-у4р 4 ปีที่แล้ว

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

  • @СергейПетров-б1ф
    @СергейПетров-б1ф 4 ปีที่แล้ว

    Спасибо, все понятно!

  • @pavelios3577
    @pavelios3577 6 ปีที่แล้ว +3

    Спасибо.

  • @Kokurorokuko
    @Kokurorokuko 3 ปีที่แล้ว +5

    Я понимаю, что это очевидно, наверное, но если что, необязательно в дружественную функцию передавать параметром объект. Можно в ней создать экземпляр класса и поля так же будут доступны. Просто Сергей не уточнил это.
    Это будет выглядеть так:
    class MyClass
    {
    ...
    friend void Foo();
    private:
    int size;
    ...
    };
    void Foo()
    {
    MyClass obj;
    obj.size = 5;
    }

    • @ДмитрийНормов-ю6ц
      @ДмитрийНормов-ю6ц 2 ปีที่แล้ว

      а разве объект - это не экземпляр класса?

    • @roflkek6901
      @roflkek6901 2 ปีที่แล้ว +2

      Не очень много смысла в твоем коде, конечно, хотя бы возвращай объект тогда, который создал

  • @ohgrac
    @ohgrac 6 ปีที่แล้ว

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

  • @DmitryDolganov
    @DmitryDolganov 5 ปีที่แล้ว +4

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

  • @distraw1753
    @distraw1753 4 ปีที่แล้ว

    Очень понятно... благодаря вам)

  • @ylikitishnik1946
    @ylikitishnik1946 3 ปีที่แล้ว

    крутая эта вещь а вам спасибо за урок

  • @FyUajYpUlM39
    @FyUajYpUlM39 3 ปีที่แล้ว +4

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

    • @princessmary5556
      @princessmary5556 ปีที่แล้ว +1

      Вы написали какую то чушь. Вообще не понятно, какое отношение ваш пост имеет к дружественным функциям.

  • @wasony.126
    @wasony.126 4 ปีที่แล้ว

    От души 👍👍👍

  • @MeGaFaLLout
    @MeGaFaLLout 7 ปีที่แล้ว +5

    Здравствуйте Сергей!
    Позвольте задать 1 вопрос.
    Если я посмотрю все ваши 88 выпусков по программированию на C++,то могу ли я назваться хотя-бы junior-ом?
    Практика и пересмотр уроков входят в вопрос.

    • @НиколайПокровский-р6в
      @НиколайПокровский-р6в 7 ปีที่แล้ว +5

      Как правило, сейчас С++ в чистом виде уже не использует никто, как минимум для juniora нужно знать какие то фреймворки или библиотеки, с которыми придется работать в конкретной области

    • @MeGaFaLLout
      @MeGaFaLLout 7 ปีที่แล้ว

      Спасибо за информацию!

    • @SimpleCodeIT
      @SimpleCodeIT  7 ปีที่แล้ว +11

      Николай всё правильно ответил. Мои уроки это лишь база, но без которой никуда.

    • @НиколайПокровский-р6в
      @НиколайПокровский-р6в 7 ปีที่แล้ว +10

      А если хочешь работать программистом зная язык в чистом виде, то учи java, C#....больше не скажу, сам пока недопрограммист, но С++ в любом случае лишним не будет, при том, что тут подача материала реально классная

    • @deniskozak5997
      @deniskozak5997 7 ปีที่แล้ว +2

      Так а после прохождения базы чем можно заниматься? Чтобы идти на работу хотя бы джуниором нужно уметь работать в каком-то фреймворке ? Например тот же Qt? Можете ответить, просто без понятия куда двигаться после курса дальше и что изучать, везде на форумах пишут про разные библиотеки, фреймворки и т.п .

  • @aleksandrdrobyshev7623
    @aleksandrdrobyshev7623 4 ปีที่แล้ว +1

    @SimpleCode сколько уже народу подписалось на 1$? Иду подписываться.

  • @kabanenko5319
    @kabanenko5319 3 ปีที่แล้ว

    Ти крутий мужик!

  • @blackgolddev4023
    @blackgolddev4023 5 ปีที่แล้ว +1

    Вы лучший. А вы где нибудь препадаете? Хотел бы стать вашим учеником

  • @MySkiFFFRuler
    @MySkiFFFRuler 7 ปีที่แล้ว +3

    #SimpleCode, спасибо за уроки, они очень полезны для новичков.
    Хотел спросить по Patreon. Может ты введешь там разные плэджи?
    Например:
    5$ - посмотрю и оценю ваш код
    10$ - Дам вам лучшую по моему мнению литературу( которая даст определенный буст в развитии).
    20$ - Проведу урок 1х1, скажу над чем работать.
    40$ - ...
    и т.д.
    Еще раз спасибо за уроки, очень подробно и понятно.

    • @SimpleCodeIT
      @SimpleCodeIT  7 ปีที่แล้ว +4

      Спасибо за совет. Но пока нет смысла делать нечто подобное, да и не знаю будет ли вообще, так как поддержать канал даже суммой 1$ выразил желание только один человек.

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 ปีที่แล้ว

      @@SimpleCodeIT как успехи?)

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 ปีที่แล้ว

      @@SimpleCodeIT пока из-за коронки денег нет :<
      хочу выучить c++ и некоторые библиотеки, и написать свою игру, и выложить в Steam. Может, хоть какой заработок будет и, наконец, смог полписаться на Patreon :>

    • @frazismert3071
      @frazismert3071 ปีที่แล้ว +2

      @@SaffronChipMCPE ну и как?

  • @ahmadum
    @ahmadum 4 ปีที่แล้ว

    Лайк не глядя

  • @МарияСултанбекова
    @МарияСултанбекова ปีที่แล้ว

    спасибо!!

  • @borisermolaev3158
    @borisermolaev3158 6 ปีที่แล้ว +3

    Поставь восьмибитного музла на фон.

  • @Александр-й2в2о
    @Александр-й2в2о 4 หลายเดือนก่อน

    Блин!
    Столько мыслей...
    А можно ли описывать внутри класса, создание другова класса Xd
    И типа методы другова класса делать дружественными?
    Также интересно, можно ли реализовать для слова friend некую выборку дружественных функций через массив, и чтобы они время от времени менялись ...
    Пожалуй не буду забегать в перёд... Просто ведь доступ к полям нашего класса получать по идеи нельзя с одной стороны, но с другой \._./
    Ведь любой программист может описать дружественную функцию типа или внести изменение, типа:эта функция теперь дружественная и менять наши значения в полях ;|
    Думаю я слишком много думаю об этом...
    Поэтому \._./

  • @temshik.invalid
    @temshik.invalid 3 ปีที่แล้ว

    8:50

  • @nikitasuyazov2060
    @nikitasuyazov2060 6 หลายเดือนก่อน

    Почему не работает "test.Print();"? Нет доступа к полю Print(). Но "a.Print();" работает. Не понимаю, как вывести в консоль значение в переменной test.
    Потому что функция Print() написана для класса Point и хранит 2 значения x и y. А класс Test хранит значение Data.

    • @nikitasuyazov2060
      @nikitasuyazov2060 6 หลายเดือนก่อน

      Надо для класса Test так же прописать функцию Print():
      class Test
      {
      public:
      void Print()
      {
      cout

  • @Mastodon99
    @Mastodon99 4 ปีที่แล้ว +1

    есть ошибка : в конце компилятор ругается на testValue : использование не определеного типа Test. !!!

    • @MrJustSergei
      @MrJustSergei 4 ปีที่แล้ว

      А как компилятор определяет эти буквы a, b ?

    • @Alex_Suvorov
      @Alex_Suvorov 9 หลายเดือนก่อน

      функцию надо ниже классов сделать, и всё будет работать

  • @saltanatalimbekova9479
    @saltanatalimbekova9479 6 ปีที่แล้ว

    Здравствуйте! Зачем делать поля объекта private? Можно же поля оставить public?

    • @i_interface4643
      @i_interface4643 6 ปีที่แล้ว +3

      Инкапсуляция.

    • @nailtagiyev6340
      @nailtagiyev6340 5 ปีที่แล้ว +4

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

  • @olegbocharnikov950
    @olegbocharnikov950 6 ปีที่แล้ว +1

    это можно так и к 3 и более классам обратиться

  • @koji_the_freak9181
    @koji_the_freak9181 3 ปีที่แล้ว

    Я ведь правильно понимаю что при наследовании нужно будет учитывать модификатор доступа к дружественной функции?

    • @princessmary5556
      @princessmary5556 ปีที่แล้ว

      Нет. Вы не правильно понимаете. Не существует никаких "модификаторов доступа к дружественным функциям".

  • @johnwick8332
    @johnwick8332 7 ปีที่แล้ว +1

    а могли бы объяснить как вывести еще значение дата в консоль, имхо выводиться только "х" и "у"

    • @book_riot
      @book_riot 9 หลายเดือนก่อน

      Наверное, уже не актуально..но если что - могу подсказать)

  • @dactill
    @dactill 4 หลายเดือนก่อน

    чёт не работает, член point x недоступен, хотя friend написал для него.

  • @ПоПлодамУзнаетеИх
    @ПоПлодамУзнаетеИх 6 ปีที่แล้ว

    Это уже было сложно! реально сложно! спасибо!

  • @ИНФОРМАЦИЯДЛЯУСПЕШНЫХ
    @ИНФОРМАЦИЯДЛЯУСПЕШНЫХ 5 ปีที่แล้ว

    Spsb

  • @nailtagiyev6340
    @nailtagiyev6340 5 ปีที่แล้ว

    Чи или не чи?

  • @Viamsupervadetvadens
    @Viamsupervadetvadens 7 ปีที่แล้ว +1

    up

  • @НиколайОвчинников-д6э
    @НиколайОвчинников-д6э 2 ปีที่แล้ว

    +++++

  • @Antonov_Ivan.
    @Antonov_Ivan. ปีที่แล้ว

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

  • @АлександрЛитвинюк-х2ы
    @АлександрЛитвинюк-х2ы 4 ปีที่แล้ว

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

  • @ЯрославГоловко-ф6и
    @ЯрославГоловко-ф6и 4 ปีที่แล้ว

    спасибо