static что это. Статические поля класса. Инициализация. Ключевое слово static. C++ #92

Поделиться
HTML-код
  • Опубликовано: 15 дек 2024

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

  • @mrcron9174
    @mrcron9174 6 лет назад +180

    Самые лучшие видео уроки по с++ на Ютубе. Однозначно лайк!

  • @Jessica_Cat-l1v
    @Jessica_Cat-l1v 9 месяцев назад +8

    лучших уроков для русскоговорящего комьюнити, чем у Сергея, по С++ до сих пор нет на просторах ютюба! 🤓👍👍

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

    *Друзья, если у вас есть желание помочь с развитием канала, то можете просто сделать репост этого видео! Спасибо!* =)

    • @БорисЦариков-ъ9п
      @БорисЦариков-ъ9п 6 лет назад +7

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

  • @Mar_doK
    @Mar_doK 3 года назад +28

    4 года учился в техникуме, только сейчас узнал что такое static. Всё это время у меня было не правильно понимания того как это работает. Спасибо за ваши уроки.

    • @randomcraft2345
      @randomcraft2345 8 месяцев назад

      Однако, и тут оно не совсем полное. Возможно, вы правильно понимали всё время, просто знали другую сторону этого ужасного ключевого слова), а именно эту сторону не знали.

  • @Kaumony
    @Kaumony 20 дней назад

    Учусь на втором курсе, начали изучение ооп, запустила этот предмет, так как ничего не понимала на лекциях, не сдавала лабы весь семестр, думала об отчислении, нашла ваш канал, для меня он просто спасение. Спасибо вам огромное!

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

    #static #ООП #SimpleCode #урокипрограммирования

  • @yourownazog8069
    @yourownazog8069 6 лет назад +28

    Классная фоновая музыка, классный урок!

  • @pluto2656
    @pluto2656 7 лет назад +35

    Большое спасибо за дозу информации) Репосты делаю)

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

      Спасибо за поддержку! =)

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

    Ролики великолепные - теория подана замечательно. Единтсвенное что очень сильно не хватает практических заданий, НО этот вопрос можно закрыть самостоятельно. Спасибо Вам в сотый раз!

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

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

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

    Спасибо большое! Я ждал этот урок))

  • @ivan_kirsanov
    @ivan_kirsanov Год назад +2

    Так-с, коммент для увеличения подписчиков 🙂
    Реально крутой контент. Без прикола :-) Все понятно. Объяснения не только того, как делается и что, но и ЗАЧЕМ и ДЛЯ ЧЕГО - реально лучшее в интернете. Пока слушал концовку - реализовал функционал Id :-) Причем, вначале через public переменную int Id, а потом и через private с методом TakeId()

  • @ВячеславФедотов-э9щ
    @ВячеславФедотов-э9щ 4 года назад +6

    Спасибо огромное за уроки и за то что для нас делаешь) я предпочитаю твои видеоуроки ибо хорошо их препоносишь и с примерами

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

    Твои видео лучшее что я нашел. Делай дальше и больше)

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

    Очень доступно и понятно. Даже обезьяны это поймут. Но у других почему-то не получается аналогично разжевывать аналогичное.

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

    Спасибо Сергей за урок!!! Репост в вк всегда делаю,это ведь так легко))))

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

      И за это я очень благодарен! =)

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

    Классная штука . Уже в голове крутится мысль где бы применить.
    Мое почтение.

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

    Спасибо за урок!
    Может кому то будет полезно:
    Странная конечно штука была с этой инициализацией статического поля вне класса. В c++ 17 работает inline static int ID = 0 в теле класса все прекрасно инициализируеться. В c++14 такая фишка нифига не работает, там только вне класса. Кто побывать будет проект->свойства->язык->стандарт языка c++.

  • @АндрейМиненко-ц3з
    @АндрейМиненко-ц3з 7 лет назад +6

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

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

    ну наконец то ! Спасибо за понятный тутор!

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

    Божественный курс

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

    Спасибо за урок, дз какое то сильно простое , нужно создать переменную id и в конструкторе после увеличения count++; написать this->id = count;

  • @НиколайОвчинников-д6э

    Самые лучшие видео. Спасибо за ваши уроки.

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

    While(1){
    cout

  • @ГлебДомрачев-ь7э
    @ГлебДомрачев-ь7э 4 года назад +1

    Большое спасибо за уроки!

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

    8:38 in the constructor. And in the destructor we are reduce count.

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

    Шикарные видео, просто и понятно.

  • @lynnel1831
    @lynnel1831 5 лет назад +23

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

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

    Спасибо

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

    Спасибо огромное за инфу по С++

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

    По домашке:
    1. в классе добавил в private: int apple_id;
    2. в конструкторе добавил: this->apple_id = Count; //текущее значение - есть ИД
    3. добавил функцию в public:
    int Get_ID() {
    return this->apple_id;
    }
    4. Получение ИД в main(){
    Apple apple2(22, "green");
    cout

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

      class Apple {
      friend Human;
      public:
      static int Count;
      int Id;
      Apple(int weight,string color)
      {
      this->weight = weight;
      this->color = color;
      Count++;
      this->Id = Count;
      }
      private:
      int weight;
      string color;
      };
      int Apple::Count = 0;

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

    Очень доступно объясняете, спасибо

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

    Можно контролирывать количество яблок через Конструктор, ~Деструктор класса яблок. Пример: при вызове конструктора класса увеличивать наш счетчик на +1 , при вызове деструктора уменьшать на -1.

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

    Хороший вы человек.

  • @mykhailomorhal2181
    @mykhailomorhal2181 7 лет назад +15

    Дякую)

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

    8:38 в конструкторе. Сам ответил сам, хотя на другие подобные вопросы отвечал неверно...

  • @ГусейнСалахов
    @ГусейнСалахов 4 года назад +1

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

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

    Вы лучший

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

    Благодарю за урок!

  • @Евдочок
    @Евдочок Год назад +3

    в конструкторе пишем count++

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

    Просто лучший!

  • @АртурГапуров-н5х
    @АртурГапуров-н5х 2 года назад

    Отличные видео!!!

  • @СултанЖусупов-б5т
    @СултанЖусупов-б5т 3 года назад

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

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

    Наконец то понял, что такое статичная переменная, голова уже болит от таких понятий как constant variable и static variable Получается что то вроде (масло не-масляное). брр!

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

      constant - это не пременная, а постоянная величина до всех.
      static - это постоянная локальная (не динамическая) область под переменную

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

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

  • @Гычпук
    @Гычпук Год назад +1

    с такой штукой можно создать связанный список и сделать ему индексацию кайф

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

    Поставил на паузу 8:39
    Скорее всего в конструкторе пропишем инкримент { Count++; }, а в диструкторе пропишем дикримент { Count- -;}
    Подскажите пожалуйста: Допустим мы создали несколько экземпляров класса Apple. Каким образом один из них удалить? подобно... delete apple2; как правильно записать синтаксис???
    Ой!!! Нашёл как это сделать. =) Странно... в группе, в обсуждениях этой темы не нашёл. Не ужели ни кто Д/З не делал? Код очень интересный получается. Подозреваю, что Сергей специально, что ли... не упомянул пару фишек, что бы было над чем голову по ломать. Хотя на них темы уже изучены...
    Огромное спасибо за урок и Д/З!!!

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

      А ну-ну, расскажи.. а то я пока на твой комент не наткнулся, не подумал даже про удаление.
      Ты деструктором удаляешь, да?

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

      @@aleksandrdrobyshev7623 Да. Просто в диструктор прописываешь дикримент { Count- -;} Чтобы заметить этот эффект от удаления, нужно экземпляр класса создавать в отдельной функции, чтобы после того как она завершиться, созданные переменные и экземпляры классов в ней были удалены автоматический (при этом в экземплярах вызываются диструкторы).
      Или нужно объявлять указатели и в них, через оператор "new" прописывать адрес созданного экземпляра. Ну и естественно когда вздумается его удалить пользуемся оператором "delete". Можно массив указателей объявить и в каждую ячейку положить адрес вновь созданного экземпляра. И т.д. есть ещё несколько способов. (но об этом увидите в следующих уроках)
      Таким образом после создания и после удаления, переменная "Count" меняется соответственно.

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

    Да.. объявляются в области видимости класса, однако определение выполняется в области видимости файла.
    Заморочено с этим получилось в плюсах.

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

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

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

    Спасибо за видео

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

    Благодарю за помощь

  • @Пппгг5Нагш
    @Пппгг5Нагш 3 года назад

    Увеличение статической переменой например на 1 при создании нового обьекта класса можно осуществить в конструкторе класса

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

      так и сделано же вроде

  • @Альтернативноемнение-б7э

    Коммент ради коммента.

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

      @@simpleperson3234 комент на комент комента

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

      cout

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

      Лучше так:
      class Comments
      {
      public:
      static int count_id;
      Comments(string comment)
      {
      this->comment = comment;
      count_id++;
      id_comment = count_id;
      }
      void PrintComment()
      {
      cout

  • @sleepyNovember_project
    @sleepyNovember_project 11 месяцев назад +1

    Значит берёшь такой, и спрашиваешь у яблок:
    - Сколько вас там?!
    А яблоки отвечают тебе хором:
    - 3!
    Это static moment

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

    3:38 в конструкторе: count++

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

    Дякую за відео 5++

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

    В конструкторе яблоко добавляем инкремент счетчика.

  • @ДжониСинс-щ6ж
    @ДжониСинс-щ6ж 2 года назад

    Блин, долго думал, а оказалось крайне просто. Для тех, кто делает ДЗ объясняю - вам нужно сделать геттер для вашего объекта (в нашем случае apple).

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

      достаточно ввести паблик переменную.

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

    Поддерживаем видео вырваться в топ: в конструкторе

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

    В конструкторе класса

  • @temshik.invalid
    @temshik.invalid 3 года назад

    3:00

  • @vladcvwkxam6601
    @vladcvwkxam6601 3 года назад +1

    репост , лайк, подписка))))))))))))))

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

    конструктор вызывается каждый раз при создании нового объекта, следовательно записываем inside the constructor count ++;

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

    наконец-то дз

  • @АртемОзеров-ъ4ч
    @АртемОзеров-ъ4ч 2 года назад +1

    Подскажите пожалуйста, как сделать репост видео ?

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

    Продолжай пожалуйста

  • @Спокойноэтовсеголишьсолонкасол

    В КОНСТРУКТОРЕ СОЗДАНИЯ ОБЪЕКТА КЛАССА ИСПОЛЬЗОВАТЬ ПРЕФИКСНЫЙ(ДЛЯ НАДЁЖНОСТИ)ИНКРИМЕНТ СТАТИК ПОЛЯ COUNT

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

    8:37 Мне пришло в голову, что можно инкрементировать значение счётчика в конструкторе

  • @ВладосНемерицкий

    попал сюда, так как одногрупник рассказал об этом канале)

  • @Алексей-в5н7с
    @Алексей-в5н7с 6 лет назад +1

    В конструкторее инкрементировать .

  • @user-Svitlana_inUSA
    @user-Svitlana_inUSA 3 года назад

    супер)))

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

    5:30 За стандартом треба писати всі статичні поля з великої літери?

  • @wasony.126
    @wasony.126 4 года назад

    🤔🤔👍👍👍

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

    Такс, возврат в прошлое. Здравствуйте. У меня вопрос: я делаю программу, в которой в базовом классе есть статические поля. Потом я от этого класса наследую другой класс и, в будущем, я буду наследовать ещё второй класс. И сам вопрос: будут ли у этих двух классов статические поля одинаковыми? Т.е. если я запишу что-то через один класс, то это и будет во втором классе? Или это будет распространяться только на первый наследованный класс, а во втором просто поле не изменится? Просто я стараюсь вводить все знания, которые получил, и со статическими полями у меня пока-что запара. До этого я еле-еле разобрался с виртуальными методами (так как VS 2019 требовала, чтобы я объявлял виртуальные методы в базовом классе, а в наследнике уже их переопределял) и при этом вообще не ведомую мне ошибку выводил, что я даже на сайте Microsoft ничего не понял (ну сейчас вроде немного разобрался).
    Прога кстати - графический интерфейс на основе SFML.

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

    Скажите пожалуйста, такой вопрос. Объекты класса имеют разные адреса, а как я понимаю конкретный метод класса у разных экземпляров находится по одному и тому же адресу. Такая же история с static. Я правильно понимаю ?

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

      Не правильно, методы тоже у всех разные. Только если они не статик. static методы мы в ближайшее время тоже рассмотрим.

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

      #SimpleCode ясно, спасибо за Ваш ответ!

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

    (В конструкторе класса)

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

    danke!

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

    Доброго времени суток.
    Уроки шикарные и намного попонятнее чем у "профессоров" в институте.
    Но не мог бы кто то подсказать, что такое "двойное двоеточие", т.к. используется Сергеем часто, а что это - непонятно

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

      Это такой синтаксис, означает принадлежность к классу,
      Apple::
      , принадлежит классу Apple

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

      @@UnifiedGod Понял. Спасибо за ответ )

  • @nikitasinsobaki
    @nikitasinsobaki 8 месяцев назад

    Создание яблока происходит в конструкторе класса

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

    Спасибо за уроки! Я пишу первый комментарий с момента начала просмотра! Уроки просто класс! До этого учился сам по книге (освой С++ да 24 часа). А у тебя Сергей всё разжёвано на высшем уровне!
    По поводу static, я так понимаю, что что при создании первого экземпляра класса, создаётся "статическое" поле и присваивается ему ссылка (указатель), а при создании последующих экземпляров этого класса создается ссылка (указатель) на "статическое" поле созданное в первым экземпляром? Я правильно понял работу Static?

    • @deathstroke-96
      @deathstroke-96 6 лет назад +1

      Александр Можаровский static может работать и без объявления экземпляра, не?

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

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

    • @ОлегВасилевский-ш8щ
      @ОлегВасилевский-ш8щ 5 лет назад +2

      Это переменная из пространства имен Apple. Есть например оператор "namespase", который определяет пространство имен(Урок #125), "class" работает аналогично. Если написать перед main() "namespace Apple { int id = 0; }", затем в main() добавить "Apple::id++;" и сравнить дизассемблированный код (при отладке, правая кнопка мыши, К дизассемблированному коду), увидите что все работает одинаково. Только в классе еще можно и доступ ограничить, если объявить переменную в блоке "private".

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

    Есть поле класса которое общее для всех экземпляров класса, занимает много памяти и его можно только вычислить. Вопрос как заставить компилятор не требовать инициализации статического поля?

  • @Беркут-м7о
    @Беркут-м7о 2 года назад

    А можно ли создать статическую переменую в динамической памяти(куче)?

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

    Нужно в конструктор написать Count++;

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

    Возможно в конструкторе.

  • @МыСтроимСами
    @МыСтроимСами 5 лет назад

    В конструкторе )))

  • @ИванГончаренко-п2н

    В констрикторе и деструкторе.

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

    как вы переходите к следующему шагу в режиме отладки (остановки) ?

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

    это очень похоже как работа с указателем. только скажем хардварно зависимое

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

    В конструкторе и конструкторе копирования (в конструкторе копирования уже не факт, что нужно, так как надо смотреть на логику программы) увеличить count на единицу инкрементом. В деструкторе нужно уменьшить.

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

    Интересно, сколько было подписчиков на момент выхода видео? Сейчас-то 190К

  • @МихаилКрылов-п5ч
    @МихаилКрылов-п5ч 3 года назад

    В конструкторе скорее всего, не бейте если не правильно :)

  • @sov.harlem934
    @sov.harlem934 5 лет назад

    В конструкторе)

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

    в конструкторе

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

    в конструкторе бро

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

    Комментарий

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

    +

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

    А в какой момент происходит инициализация Count? Не могу в дебагере пошагово отследить

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

    в конструкторе!!!!!!!

  • @МишаБобров-и1з
    @МишаБобров-и1з 3 года назад +1

    Я только не понимаю, зачем в конструкторе использовать This , если можно просто указать другие вх.параметры например: weight1 color1

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

      ну, ты понял, зачем?

    • @АртемБатьков-м6ю
      @АртемБатьков-м6ю 2 года назад +2

      @@ДмитрийНормов-ю6ц можно, только нахрена плодить сущности? Обращаясь к this ты не создаёшь никаких копий, а говоришь компилятору
      "Слышь, обратился к этому (от анг. this) объекту (который в данный момент обращаешься), и достал от туда переменную/функцию."
      А дальшей делай с ней че хочешь.
      В твоем варианте ты создаёшь еще одну переменную, которую где то надо хранить. Что же будет когда ты начнёшь обрабатывать железо? Или графический процессор, где за каждый такт нужно отрисовывать, ну скажем 9к полигонов, например?
      Загадка Жака Фреско, на размышление дается ассемблер.

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

      @@АртемБатьков-м6ю шедеврально ответил)

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

    commentariy