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

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

КОМЕНТАРІ • 165

  • @mrcron9174
    @mrcron9174 6 років тому +175

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

  • @user-ny4zk7gj7n
    @user-ny4zk7gj7n 6 місяців тому +7

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

  • @Mar_doK
    @Mar_doK 2 роки тому +27

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

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

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

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

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

    • @user-fp2sb2fb6v
      @user-fp2sb2fb6v 6 років тому +7

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

  • @pluto2656
    @pluto2656 7 років тому +35

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

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

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

  • @yourownazog8069
    @yourownazog8069 6 років тому +28

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

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

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

  • @user-mykyta_vyshniakov
    @user-mykyta_vyshniakov 4 роки тому +4

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

  • @Ermine882
    @Ermine882 7 років тому +15

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

  • @ivan_kirsanov
    @ivan_kirsanov Рік тому +2

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

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

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

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

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

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

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

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

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

  • @user-xr4vl2rd4w
    @user-xr4vl2rd4w 4 роки тому +6

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

  • @lynnel1831
    @lynnel1831 5 років тому +23

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

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

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

  • @user-bc4vi6hl2f
    @user-bc4vi6hl2f 6 років тому +6

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

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

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

  • @EngineerFox
    @EngineerFox 12 днів тому

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

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

    По домашке:
    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 10 місяців тому

      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;

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

    Спасибо

  • @mykhailomorhal2181
    @mykhailomorhal2181 6 років тому +15

    Дякую)

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

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

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

    While(1){
    cout

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

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

  • @etniqa3638
    @etniqa3638 5 років тому +1

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

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

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

  • @user-up8ip1qq7m
    @user-up8ip1qq7m Рік тому +3

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

  • @user-tr6mf1ps5n
    @user-tr6mf1ps5n Рік тому

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

  • @user-ji7it9xd7x
    @user-ji7it9xd7x 3 роки тому +1

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

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

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

  • @azlacatel1816
    @azlacatel1816 4 роки тому +1

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

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

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

  • @blackgolddev4023
    @blackgolddev4023 5 років тому +1

    Вы лучший

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

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

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

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

  • @user-ut7tj6bp4t
    @user-ut7tj6bp4t 4 роки тому +1

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

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

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

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

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

  • @user-ur3mc6hb5d
    @user-ur3mc6hb5d Рік тому +1

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

  • @user-sx4gr8uk5h
    @user-sx4gr8uk5h 6 років тому +15

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

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

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

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

      cout

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

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

  • @user-ij4rv9yi7s
    @user-ij4rv9yi7s 2 роки тому

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

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

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

  • @user-ik2kp3fh6r
    @user-ik2kp3fh6r 3 роки тому

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

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

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

  • @user-hn2vt6fe3q
    @user-hn2vt6fe3q 2 роки тому

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

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

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

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

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

  • @user-ri4kr8zs6c
    @user-ri4kr8zs6c 2 роки тому +1

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

  • @BrownAleks
    @BrownAleks 4 роки тому +1

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

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

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

    • @BrownAleks
      @BrownAleks 4 роки тому +1

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

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

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

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

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

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

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

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

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

  • @user-mykyta_vyshniakov
    @user-mykyta_vyshniakov 4 роки тому

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

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

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

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

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

  • @pluto2656
    @pluto2656 7 років тому +8

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

  • @user-ol9es1ch9x
    @user-ol9es1ch9x Рік тому

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

  • @user-kh5lg4hh3u
    @user-kh5lg4hh3u 2 роки тому

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

    • @bat_bsv
      @bat_bsv 10 місяців тому

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

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

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

  • @sleepyNovember_project
    @sleepyNovember_project 7 місяців тому +1

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

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

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

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

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

    • @error7654
      @error7654 7 років тому

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

  • @methodgarbage8506
    @methodgarbage8506 5 років тому +1

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

  • @user-Svitlana_inUSA
    @user-Svitlana_inUSA 3 роки тому

    супер)))

  • @Hopeless_Idealist
    @Hopeless_Idealist 5 років тому +1

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

  • @EgorYarosh
    @EgorYarosh 5 років тому +1

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

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

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

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

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

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

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

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

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

  • @temshik.invalid
    @temshik.invalid 3 роки тому

    3:00

  • @user-nj3vd5wr1i
    @user-nj3vd5wr1i Рік тому

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

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

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

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

    danke!

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

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

  • @user-wd4js9jl5z
    @user-wd4js9jl5z 6 років тому +1

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

  • @expert6609
    @expert6609 6 років тому +3

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

    • @deathstroke-96
      @deathstroke-96 6 років тому +1

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

    • @shehamane3518
      @shehamane3518 6 років тому +4

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

    • @user-rv9ox7ld1e
      @user-rv9ox7ld1e 5 років тому +2

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

  • @user-te6bm6gl3i
    @user-te6bm6gl3i Рік тому

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

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

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

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

    🤔🤔👍👍👍

  • @user-vk1yz9sk2e
    @user-vk1yz9sk2e 2 роки тому

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

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

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

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

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

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

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

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

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

  • @user-bw1fh9pd3i
    @user-bw1fh9pd3i 3 роки тому +1

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

    • @user-or1hy4xz8u
      @user-or1hy4xz8u 2 роки тому

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

    • @user-tq3zn1wm1k
      @user-tq3zn1wm1k 2 роки тому +2

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

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

      @@user-tq3zn1wm1k шедеврально ответил)

  • @etniqa3638
    @etniqa3638 5 років тому +1

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

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

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

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

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

  • @user-iu6xg8wo8l
    @user-iu6xg8wo8l 5 місяців тому

    Что-то я попробовал template и static для подсчета, нифига не работает(
    А отдельно работает

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

    +

  • @user-pm6dh6do8b
    @user-pm6dh6do8b 4 роки тому

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

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

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

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

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

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

    Комментарий

  • @user-uj4gr9ql4m
    @user-uj4gr9ql4m Рік тому

    то есть по сути это просто общая среди родственных классов ссылка на какую-то ячейку памяти?

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

      общая переменная среди объектов класса

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

      @@inweqs выходит что каждый объект хранит ссылку на эту static переменную

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

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

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

    Может все видео про с++ пролайкать до дырок???

  • @user-me5bb3ig3k
    @user-me5bb3ig3k 6 років тому

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

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

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

  • @sov.harlem934
    @sov.harlem934 4 роки тому

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

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

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

  • @user-gl7pe3io7p
    @user-gl7pe3io7p 3 роки тому

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