Статические методы класса зачем нужны. Модификатор static. Как влияет. ООП. Для начинающих. Урок #94

Поділитися
Вставка
  • Опубліковано 17 гру 2024

КОМЕНТАРІ • 130

  • @Jessica_Cat-l1v
    @Jessica_Cat-l1v 9 місяців тому +33

    Благодарность Сергею из 2024!🤓

  • @ГлебДомрачев-ь7э
    @ГлебДомрачев-ь7э 4 роки тому +72

    Не знаю почему, но очень улыбнула фраза: "посмотрим какие ID у наших яблок";) Сразу представляется офис яблок с пейджиками, и базы данных с их зарплатами.
    Спасибо за уроки Сергей!

    • @イリアポリャン好木
      @イリアポリャン好木 2 роки тому +5

      ты сумасшедший просто ,забей

    • @_Yes_.
      @_Yes_. 2 роки тому +1

      @@イリアポリャン好木 xtk

    • @_Yes_.
      @_Yes_. 2 роки тому

      @@イリアポリャン好木 kjk xtk jy gj ghbrjke crfpfk

    • @nightwolf9596
      @nightwolf9596 11 місяців тому +1

      Секретная лаборатория айпл)

  • @ВаняВолошин-о2и
    @ВаняВолошин-о2и 7 років тому +66

    Сергей, огромное спасибо за уроки! Продолжай в том же духе))) Всегда смотрю вашы уроки...

    • @SimpleCodeIT
      @SimpleCodeIT  7 років тому +5

      Пожалуйста!

    • @_Yes_.
      @_Yes_. 2 роки тому

      ваши*

    • @raskyagopota3879
      @raskyagopota3879 2 роки тому +1

      @@_Yes_. Ваши*

    • @_Yes_.
      @_Yes_. 2 роки тому

      @@raskyagopota3879 чел иди лучше русский язвк выйчи

    • @_Yes_.
      @_Yes_. 2 роки тому

      @@raskyagopota3879 чел иди лучше русский язвк выйчи

  • @sgimancs
    @sgimancs 5 років тому +32

    Вот это хобби! Это С++ шедевр, а не хобби. Немного жаль, что для C# пока немного аналогичных уроков. Но подожду т. к. это стоит того. Конечно это гигантская и длительная работа. Это не совсем стандартные базовые уроки для начинающих (как у всех других здесь). Это исследования различных возможностей языка С++ на более глубоком уровне (для тех, кто желает реально изучить этот непростой язык).

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому +4

      согласен с тобой, я бы врятли понимал всё это, если бы не эти уроки~

    • @_Yes_.
      @_Yes_. 2 роки тому

      @@SaffronChipMCPE тпрваимоаукшщп3туащшдлуокпекирнркеолнгкуелнгглневагпб

    • @SaffronChipMCPE
      @SaffronChipMCPE 2 роки тому

      @@_Yes_.?

    • @romt2845
      @romt2845 2 роки тому

      @@_Yes_. нет, я считаю, что фывзкпоешвкзшпноывещшзровещзшрноыщешну58еку8шекузщеу4з9

    • @_Yes_.
      @_Yes_. 2 роки тому

      @@SaffronChipMCPE меня мама к компу прижала

  • @МишаБобров-и1з
    @МишаБобров-и1з 4 роки тому +6

    Получается комментарий под этим видео. Это сеттер к обекту Урок#94 класса Основы C++.
    Основы_С++.урок#94.SetComment("Спасибо Сергей за видео!
    ");

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +20

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

  • @ПоПлодамУзнаетеИх
    @ПоПлодамУзнаетеИх 6 років тому +9

    ахрененно!!!!!!!! Сергей не устану повторять! Лучший

  • @egorbul4288
    @egorbul4288 7 років тому +17

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

  • @darkfateinc7333
    @darkfateinc7333 5 років тому +2

    Зашел чтобы узнать - где используются статические методы и переменные. Узнал, спасибо, урок очень качественный.

  • @segars9604
    @segars9604 Рік тому +1

    Спасибо за бесценную работу!

  • @Fedor-t4v
    @Fedor-t4v 7 років тому +12

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

  • @kaynsolo
    @kaynsolo 6 років тому +13

    Круто!Спасибо!

  • @flepjack
    @flepjack 3 роки тому +3

    Я уже устал писать спасибо) Но не перестану!)

  • @petardo7783
    @petardo7783 7 років тому +25

    Спасибо за понятное объяснение. Хотелось бы добавить.
    1) В статик методах класса можно работать только с статик переменными этого класса, в не статик методах класса можно работать со статик переменными класса.
    2) Вы объявили private static переменную в классе и потом после его описания инициализировали переменную. Я работаю в Qt Creator и хотелось бы добавить что компилятор таким способом выдаёт ошибку что переменная приватная. Нужно было объявить отдельно класс Aplle с двумя файлами Apple.h и Apple.cpp, заголовочный файл и файл реализации. Так вот инициализация приватной статик переменной происходит в файле реализации.

    • @Archevisor34
      @Archevisor34 6 років тому +1

      можете подробнее описать что делать? не понимаю(

    • @serzhant7169
      @serzhant7169 4 роки тому +4

      вообще-то 1) он рассказал 12:50, невнимательно смотрел

  • @ДГаусс
    @ДГаусс 4 роки тому +3

    Спасибо огромное. На мой взгляд обращаться к методу статическим способом куда более удобнее

  • @ЕгорСтрахов-я9ю
    @ЕгорСтрахов-я9ю 6 років тому +4

    Ты просто лучший!! Люблю тебя!)!)!)!!

  • @seezentzort
    @seezentzort 4 роки тому +2

    Спасибо за твой труд!

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

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

  • @ВсеволодЗорин-л6н
    @ВсеволодЗорин-л6н 6 років тому +4

    спасибо Вам.

  • @nap0le0nb0naparte7
    @nap0le0nb0naparte7 7 років тому +11

    круто!!!

  • @veritas3705
    @veritas3705 Рік тому

    Как всегда отличный урок. Благодарю !) Только после этих уроков лучше понимаешь книги или других авторов ))

  • @ИванКозловский-ш9н

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

  • @theflameflare
    @theflameflare Рік тому +6

    Поздравляю, дамы и господа. Мы перешли на новый уровень: теперь надписи в Paint делаются не "от руки", а используя функцию Text ))

  • @nikitasuyazov2060
    @nikitasuyazov2060 5 місяців тому

    Да, сложная тема, особенно под конец видео. Пересмотрел 2 раза и, наверное, надо бы ещё потом.

  • @cheatack2141
    @cheatack2141 3 роки тому +4

    Думаю про статические данные нужно рассказывать пораньше, т.к я как раз про них и думал когда начинал изучать ооп. Я считал что у всех объектов класса просто общие поля и методы. Это как другая точка зрения помогающая сразу понять что из себя представляют классы.

    • @Александр-й2в2о
      @Александр-й2в2о 4 місяці тому

      На самом деле да!
      В начале реально конфуз, а когда понимаешь что к примеру поля не общие, в голову сразу лезет концепция о том что наверное можно создать общее поле для всех объектов :\

  • @cppprograms5868
    @cppprograms5868 5 років тому +3

    просто, класс.

  • @ИванПривалов-х1щ
    @ИванПривалов-х1щ 5 років тому +2

    Спасибо!

  • @Slime191
    @Slime191 6 років тому +111

    Ахах, мало стойких людей осталось к этому уроку) Что-же на 190м?)

    • @learnz1373
      @learnz1373 5 років тому +3

      @Dealer Studio Я думаю так многие сделали (я в том числе)

    • @МаксимРебянов
      @МаксимРебянов 4 роки тому

      @Dealer Studio Какие программки?

    • @МаксимРебянов
      @МаксимРебянов 4 роки тому

      @Dealer Studio на фрилансе где то работаешь? Долго плюсы изучал?

    • @ОленьТоповый
      @ОленьТоповый 4 роки тому +4

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

    • @yuriytheone
      @yuriytheone 4 роки тому

      У тебя комментарии полистать твоей фамилии.... Не стыдно?

  • @mykhailomorhal2181
    @mykhailomorhal2181 7 років тому +4

    Спасибо)

  • @МаксимГудаев-ь8с
    @МаксимГудаев-ь8с 2 роки тому +3

    Для такого статического метода как static void ChangeColor(Apple &apple, std::string _color) можно также вызвать его через один объект, а поменять цвет у другого: apple_1.ChangeColor(apple_3, "red"); - поменяет цвет третьему яблоку. Не знаю насколько это полезно, просто мое наблюдение)

    • @doctor_livsi_pod_phonk
      @doctor_livsi_pod_phonk Рік тому +3

      Считаю что надо вообще запретить вызов статик методов через объект, проходил практику, видел норм прогеров, никто так не делает. Обращаются чисто через класс а не объект к статикам. Иначе это может запутать

    • @lovxxs
      @lovxxs Рік тому

      @@doctor_livsi_pod_phonk к этому придет любой нормальный прогер

  • @ЯрославГоловко-ф6и
    @ЯрославГоловко-ф6и 4 роки тому +3

    спасибо

  • @kingoflostwave3733
    @kingoflostwave3733 2 роки тому

    В 22 году спокойно засунул статик переменную в приват, все работает

  • @alexandrsargsyan2202
    @alexandrsargsyan2202 2 роки тому

    Спасибо огромное

  • @KokoJamba_New
    @KokoJamba_New 6 місяців тому

    Поддерживаю

  • @iosiph
    @iosiph 5 років тому +4

    Сначала скачал книгу спп за 21 дня. Потом нашел твой канал. И такое ощущение что смотря твои видосы можно освоить информацию с той же книги за более короткие сроки:D Спасибо

    • @TheWladberlin
      @TheWladberlin 5 років тому +2

      Хм.. у меня скорость освоения очередного урока заметно поубавилась, пропорционально номеру :))

    • @VideoEffekts
      @VideoEffekts 5 років тому

      месяц назад я тоже плохо усваивал, хотя все знал теоретический. Нужна практика и понимание приходит лучше.

    • @melmenx
      @melmenx 5 років тому

      @@VideoEffekts , согласен. Тоже сначала учил теорию с минимальным количеством практики. Поэтому больше практики по пройденному материалу и всё будет окей)

  • @armm6437
    @armm6437 2 роки тому

    Уроки огонь=)

  • @hotabmax6431
    @hotabmax6431 4 роки тому

    Посмотрел 90 уроков за 3 дня. Пожалуй нужно делать перерывы)

    • @wasony.126
      @wasony.126 4 роки тому +1

      За 3 дня 😂😂😂

    • @wasony.126
      @wasony.126 4 роки тому

      И что ты понял

    • @hotabmax6431
      @hotabmax6431 4 роки тому

      @@wasony.126 За 4 дня я изучил весь язык. Кроме нововведений. И естественно библиотек.

    • @hotabmax6431
      @hotabmax6431 4 роки тому

      @@wasony.126 Ну я изучил ООП. Что такое объект класса. Инкапсуляцию. Наследование. Полиморфизм. Понял впринципе что такое функция ( я ради этого и начал смотреть, потому что в техникуме меня обучили только basic и delphy). Перегрузку понял, но вроде стл библиотека сама перегружает не помню. Я пока не смотрю стл мне диплом нужно делать, некогда.

    • @hotabmax6431
      @hotabmax6431 4 роки тому

      @@wasony.126 Указатели ещё и ссылки там были.

  • @ХайлайтыДлиннойВоли

    11:42 when method is sus

  • @Bigssityslife0.444
    @Bigssityslife0.444 4 роки тому

    супер!

  • @vuniverserb1142
    @vuniverserb1142 3 роки тому +2

    Передавая ссылку на объект в статик метод мы буквально отменяем то что мы неявно запретили словом статик. Статик просто убирает первый неявный аргумент *this.

  • @Isturfore
    @Isturfore 6 місяців тому

    Заранее спрашиваю, подскажите как дальше развиваться после окончания этого плейлиста?

  • @wasony.126
    @wasony.126 4 роки тому +1

    👍👍👍👍👍

  • @ИНФОРМАЦИЯДЛЯУСПЕШНЫХ

    Спсб

  • @Александр-й2в2о
    @Александр-й2в2о 4 місяці тому

    Хм, выходит суть полей static
    В том что это типа по факту обычные переменные :|
    Ну типа поле не привязанное к конкретному объекту, и также с методами статик :|
    Для простоты буду считать что инициализация вне класса, полей статик
    Является указанием на то что его значение не принадлежит ни одному из объектов \._./
    Методы статик тоже классная штука как вижу хех))
    Ну типа вызывается вне зависимости объекта...
    То есть представка static
    Обозначает независимость от объекта.. При этом поля/методы статик все ещё являются частью класса :|
    Типа да короче

  • @Spirit887
    @Spirit887 Рік тому

    Вопрос, возможно, глупый, но можно ли перегрузить метод «ChangeCollor» (в данном примере) и в виде статического, и не статического?

  • @IlyaZherebtsov
    @IlyaZherebtsov Рік тому +1

    наверно имелось ввиду не "единственная", а "единая"?

  • @Женечег-е7п
    @Женечег-е7п Рік тому

    Про метод понятно. А я видел, что просто функции с модификатором static объявляется без какого либо класса. Не подскажете зачем это делается?

    • @sleepyNovember_project
      @sleepyNovember_project 9 місяців тому

      Объявление переменной или функции как static (вне класса или структуры), делает их доступными только в том файле, в котором они написаны и больше нигде
      P.S. относится к «.cpp»
      Это можно легко проверить:
      Сначала в проекте создать 2 .cpp файла, написать в них абсолютно одинаковые функции/переменные и попробовать скомпилировать проект, должна быть ошибка. Если же приписать к одной из функций/переменных "static", то ошибки уже быть не должно

  • @nextgen3442
    @nextgen3442 5 років тому +2

    Переписал код с видео один в один, но компилятор выдаёт ошибку LNK2001 "Неразрешённый внешний символ private:static int Apple::count (? count@Apple@@0HA" Если закомментировать строки с переменной count в конструкторе, то ошибка исчезает. Что это может быть?

    • @maxxim58
      @maxxim58 4 роки тому +5

      Вне класса инициализируй пременную Count .

  • @СахарСоль-ь2ч
    @СахарСоль-ь2ч 3 роки тому

    В общем получается, static к static'у динамику с динамике, но как всегда не все так просто.
    p.s Спасибо за уроки, сижу с 72 ибо начальные знания были. Прекрасный канал, прекрасное объяснение. Очень радует что как только я начинаю задаваться вопросом, то почти сразу на него получаю ответ.

  • @tsohee9145
    @tsohee9145 5 років тому +3

    Понятно, но если бы класс и экземпляр класса имели разные идентификаторы было бы яснее.

  • @pavelios3577
    @pavelios3577 6 років тому +1

    Уважаемый Сергей, уважаемый народ! Что за беда, выскакивает при компиляции : неразрешённый символ, ошибка LNK 2001 ""private:static int Apple::Count" (? Count@Apple@@0HA).

    • @pavelios3577
      @pavelios3577 6 років тому

      Убралось эта ошибка и сообщение и всё заработало, только после вставки: int Apple::Count = 0; Но мы же хотели убрать эту инициализацию!? Пойду дальше разбираться...

  • @ВикторСикаленко-я6и

    Я только учусь, но кажись может быть как параметр static так и метод. ( static int atatic blabla())

  • @lightseeker745
    @lightseeker745 Рік тому +1

    Немного непонятно зачем вообще нужны static функции, если им в принимаемые параметры все равно прийдется передавать экземпляры классов...

  • @alexishome4322
    @alexishome4322 Рік тому

    А может класс состоять только из функций?

  • @vasyldruchok1978
    @vasyldruchok1978 3 роки тому +1

    11:44 when lesson is SUS

  • @validdoll
    @validdoll 6 років тому +1

    Как я понял смысл в етом методе есть только тогда когда нужно взаимодействовать с static переменными в private и то в случае когда нет объектов

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому +1

      Смысл static метода заключается в том же, в чём и смысла static поля. Работать с ним можно без экземпляра класса и он общий для всех объектов класса.

  • @pavelios3577
    @pavelios3577 6 років тому

    Уважаемый uRDy, может ты подскажешь, почему же после переноса в поле private static int Count, мы всё равно можем эту переменную изменять в int Apple::Count = 10? И вообще, что же это за private, если все переменные можно видеть и менять их через Apple::?!

    • @АндрейЕремеев-п8ь
      @АндрейЕремеев-п8ь 5 років тому +1

      он меняет её не в main. То есть в теле программы ты изменить её не сможешь.

  • @СтепанГурьянов-ч3б
    @СтепанГурьянов-ч3б 5 років тому

    можно не статическими методами работать со статическими переменными ?

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому

      да, это и происходит в конструкторе Apple

  • @DumanIshanov
    @DumanIshanov 5 років тому

    Не очень понятно, зачем тогда делать color приватным, если мы задаем функцию, разрешающую менять цвет?

    • @serzhant7169
      @serzhant7169 4 роки тому +2

      В данном случае не видно разницы, а так в методе set могла бы быть какая-нибудь проверка, которая позволяла бы присвоить переменной color только существующие цвета, чего нельзя будет сделать, если переменная будет просто public и тогда переменной можно было бы присвоить любой мусор. Тем не менее, даже в таких случаях стоит помещать переменную в private и создавать для неё get set, чтобы сразу привыкать писать грамотно

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому

      Это одна из парадигм ООП - инкапсуляция. Посмотрите вводный в ООП урок на этом канале. Там про это на понятном языке.

  • @niki4106
    @niki4106 9 місяців тому

    о, а я под прошлым уроком догадался что тут проблема в отсутствии инкапсуляции ха ха

  • @alexsischin6636
    @alexsischin6636 6 років тому

    получается, что статический метод - это тоже самое, что и дружественная функция?

    • @gloomyfoodeater7408
      @gloomyfoodeater7408 6 років тому +12

      Статический метод - функция, которую можно использовать, не создавая объект(переменную/константу и т.д.) и которая вообще не привязывается к объекту, через который её так же можно вызвать. Дружественная функция - функция, которая видит приватные/защищённые поля класса. Дружественный метод - функция, принадлежащая другому классу, которая видит поля первого класса.

    • @alexsischin6636
      @alexsischin6636 6 років тому +1

      спасибо

    • @user-cs9kg4fb9x
      @user-cs9kg4fb9x 5 років тому +3

      @@gloomyfoodeater7408 Идеально ответил

  • @nikitatsybulskyi6959
    @nikitatsybulskyi6959 6 років тому +2

    на скорости 1.5 так же хорошо воспринимать
    всем советую

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim 3 роки тому

    а сам класс статическим сделать можно? или это бред)

  • @cheatack2141
    @cheatack2141 3 роки тому +1

    А можно было вообще написать: id = Count++; и инициализировать Count как int Apple::Count = 1;

    • @priest_2152
      @priest_2152 3 роки тому

      Костыль уже какой-то, и становится менее читабельно

  • @Viamsupervadetvadens
    @Viamsupervadetvadens 7 років тому +1

    up

  • @pavelios3577
    @pavelios3577 6 років тому +16

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

  • @miroslavklyukovsky683
    @miroslavklyukovsky683 3 роки тому

    Спасибо!!!!

  • @Mar_doK
    @Mar_doK 3 роки тому

    Спасибо!