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

  Рет қаралды 105,212

#SimpleCode

#SimpleCode

6 жыл бұрын

Понравилось видео или оказалось полезным? Подпишись!
Поддержка канала
/ simplecode
static что это. Статические поля класса. Инициализация. Ключевое слово static что означает. C++ Для начинающих. Урок #92
Домашнее задание. Написать генератор идентификаторов для объектов класса используя статическую переменную.
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit

Пікірлер: 164
@user-ny4zk7gj7n
@user-ny4zk7gj7n 2 ай бұрын
лучших уроков для русскоговорящего комьюнити, чем у Сергея, по С++ до сих пор нет на просторах ютюба! 🤓👍👍
@mrcron9174
@mrcron9174 6 жыл бұрын
Самые лучшие видео уроки по с++ на Ютубе. Однозначно лайк!
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
*Друзья, если у вас есть желание помочь с развитием канала, то можете просто сделать репост этого видео! Спасибо!* =)
@user-fp2sb2fb6v
@user-fp2sb2fb6v 5 жыл бұрын
Советую всему 1 курсу в вузе для освоения основ С++ уже год))) Спасибо за уроки, сам просматриваю и повторяю отдельные моменты по ним
@Mar_doK
@Mar_doK 2 жыл бұрын
4 года учился в техникуме, только сейчас узнал что такое static. Всё это время у меня было не правильно понимания того как это работает. Спасибо за ваши уроки.
@randomcraft2345
@randomcraft2345 Ай бұрын
Однако, и тут оно не совсем полное. Возможно, вы правильно понимали всё время, просто знали другую сторону этого ужасного ключевого слова), а именно эту сторону не знали.
@user-mykyta_vyshniakov
@user-mykyta_vyshniakov 3 жыл бұрын
Ролики великолепные - теория подана замечательно. Единтсвенное что очень сильно не хватает практических заданий, НО этот вопрос можно закрыть самостоятельно. Спасибо Вам в сотый раз!
@user-xr4vl2rd4w
@user-xr4vl2rd4w 4 жыл бұрын
Спасибо огромное за уроки и за то что для нас делаешь) я предпочитаю твои видеоуроки ибо хорошо их препоносишь и с примерами
@Ermine882
@Ermine882 6 жыл бұрын
Спасибо за урок.
@AyubMagomedov
@AyubMagomedov 6 жыл бұрын
ну наконец то ! Спасибо за понятный тутор!
@user-bc4vi6hl2f
@user-bc4vi6hl2f 6 жыл бұрын
Спасибо за урок!
@etniqa3638
@etniqa3638 5 жыл бұрын
Божественный курс
@user-ji7it9xd7x
@user-ji7it9xd7x 3 жыл бұрын
Большое спасибо за уроки!
@YepSpirit
@YepSpirit 2 жыл бұрын
Шикарные видео, просто и понятно.
@user-tr6mf1ps5n
@user-tr6mf1ps5n Жыл бұрын
Самые лучшие видео. Спасибо за ваши уроки.
@pluto2656
@pluto2656 6 жыл бұрын
Большое спасибо за дозу информации) Репосты делаю)
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Спасибо за поддержку! =)
@maksimlepel9594
@maksimlepel9594 3 жыл бұрын
Очень доступно объясняете, спасибо
@yourownazog8069
@yourownazog8069 6 жыл бұрын
Классная фоновая музыка, классный урок!
@Imgui_seller
@Imgui_seller 2 жыл бұрын
Согласен!
@bulba1995
@bulba1995 Жыл бұрын
Классная штука . Уже в голове крутится мысль где бы применить. Мое почтение.
@AleksandrLapchev
@AleksandrLapchev 4 жыл бұрын
Благодарю за урок!
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
#static #ООП #SimpleCode #урокипрограммирования
@user-ut7tj6bp4t
@user-ut7tj6bp4t 4 жыл бұрын
Спасибо за урок)
@user-hz4ho1ox1q
@user-hz4ho1ox1q 4 жыл бұрын
Спасибо за знания!
@ivan_kirsanov
@ivan_kirsanov Жыл бұрын
Так-с, коммент для увеличения подписчиков 🙂 Реально крутой контент. Без прикола :-) Все понятно. Объяснения не только того, как делается и что, но и ЗАЧЕМ и ДЛЯ ЧЕГО - реально лучшее в интернете. Пока слушал концовку - реализовал функционал Id :-) Причем, вначале через public переменную int Id, а потом и через private с методом TakeId()
@egorbul4288
@egorbul4288 6 жыл бұрын
Спасибо большое! Я ждал этот урок))
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Пожалуйста! =)
@azlacatel1816
@azlacatel1816 4 жыл бұрын
Спасибо огромное за инфу по С++
@user-ij4rv9yi7s
@user-ij4rv9yi7s 2 жыл бұрын
Спасибо за урок
@user-hn2vt6fe3q
@user-hn2vt6fe3q 2 жыл бұрын
Отличные видео!!!
@flepjack
@flepjack 3 жыл бұрын
Просто лучший!
@teastrum
@teastrum 3 жыл бұрын
Благодарю за помощь
@volodymyrgutsu7011
@volodymyrgutsu7011 2 жыл бұрын
Спасибо за видео
@epickby9476
@epickby9476 3 жыл бұрын
Спасибо за урок, дз какое то сильно простое , нужно создать переменную id и в конструкторе после увеличения count++; написать this->id = count;
@vladimirdiadichev6140
@vladimirdiadichev6140 6 жыл бұрын
Спасибо
@nap0le0nb0naparte7
@nap0le0nb0naparte7 6 жыл бұрын
Спасибо Сергей за урок!!! Репост в вк всегда делаю,это ведь так легко))))
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
И за это я очень благодарен! =)
@DEKJ1000
@DEKJ1000 3 жыл бұрын
Спасибо за урок! Может кому то будет полезно: Странная конечно штука была с этой инициализацией статического поля вне класса. В c++ 17 работает inline static int ID = 0 в теле класса все прекрасно инициализируеться. В c++14 такая фишка нифига не работает, там только вне класса. Кто побывать будет проект->свойства->язык->стандарт языка c++.
@user-Svitlana_inUSA
@user-Svitlana_inUSA 2 жыл бұрын
супер)))
@lynnel1831
@lynnel1831 5 жыл бұрын
может кому пригодится совет, в деструкторе используйте не count--, а --count, иначе будет возвращать старое значение. спасибо за урок.
@blackgolddev4023
@blackgolddev4023 4 жыл бұрын
Вы лучший
@sgimancs
@sgimancs 4 жыл бұрын
Очень доступно и понятно. Даже обезьяны это поймут. Но у других почему-то не получается аналогично разжевывать аналогичное.
@borisermolaev3158
@borisermolaev3158 5 жыл бұрын
Хороший вы человек.
@mykhailomorhal2181
@mykhailomorhal2181 6 жыл бұрын
Дякую)
@vladcvwkxam6601
@vladcvwkxam6601 3 жыл бұрын
репост , лайк, подписка))))))))))))))
@alexpirotsky6247
@alexpirotsky6247 4 жыл бұрын
Коммент ради коммента.
@yerzhan82
@yerzhan82 3 жыл бұрын
While(1){ cout
@user-up8ip1qq7m
@user-up8ip1qq7m 8 ай бұрын
в конструкторе пишем count++
@TheWladberlin
@TheWladberlin 4 жыл бұрын
По домашке: 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
@user-zg9du7nu9q
@user-zg9du7nu9q 6 ай бұрын
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;
@igorvasylevskyi3629
@igorvasylevskyi3629 5 жыл бұрын
Дякую за відео 5++
@mikesteinar2713
@mikesteinar2713 3 жыл бұрын
8:38 in the constructor. And in the destructor we are reduce count.
@user-kb6qd8rg4g
@user-kb6qd8rg4g 4 жыл бұрын
спасибо
@rekombermayas6269
@rekombermayas6269 Жыл бұрын
danke!
@kurama3322
@kurama3322 5 жыл бұрын
наконец-то дз
@Fakem1ner
@Fakem1ner 2 жыл бұрын
8:38 в конструкторе. Сам ответил сам, хотя на другие подобные вопросы отвечал неверно...
@wasony.126
@wasony.126 4 жыл бұрын
🤔🤔👍👍👍
@methodgarbage8506
@methodgarbage8506 5 жыл бұрын
Продолжай пожалуйста
@denisyegorov5109
@denisyegorov5109 5 жыл бұрын
Наконец то понял, что такое статичная переменная, голова уже болит от таких понятий как constant variable и static variable Получается что то вроде (масло не-масляное). брр!
@sgimancs
@sgimancs 4 жыл бұрын
constant - это не пременная, а постоянная величина до всех. static - это постоянная локальная (не динамическая) область под переменную
@user-ur3mc6hb5d
@user-ur3mc6hb5d 10 ай бұрын
с такой штукой можно создать связанный список и сделать ему индексацию кайф
@user-ik2kp3fh6r
@user-ik2kp3fh6r 2 жыл бұрын
Увеличение статической переменой например на 1 при создании нового обьекта класса можно осуществить в конструкторе класса
@odnorob
@odnorob 2 жыл бұрын
так и сделано же вроде
@BalabayUA
@BalabayUA Жыл бұрын
Да.. объявляются в области видимости класса, однако определение выполняется в области видимости файла. Заморочено с этим получилось в плюсах.
@Hopeless_Idealist
@Hopeless_Idealist 5 жыл бұрын
Поддерживаем видео вырваться в топ: в конструкторе
@vladyslavkryvoruchko
@vladyslavkryvoruchko Жыл бұрын
Думаю, что надо вынести инициализацию метода вне класса яблока, чтобы потом там можно изменить статическую переменную.
@BrownAleks
@BrownAleks 4 жыл бұрын
Поставил на паузу 8:39 Скорее всего в конструкторе пропишем инкримент { Count++; }, а в диструкторе пропишем дикримент { Count- -;} Подскажите пожалуйста: Допустим мы создали несколько экземпляров класса Apple. Каким образом один из них удалить? подобно... delete apple2; как правильно записать синтаксис??? Ой!!! Нашёл как это сделать. =) Странно... в группе, в обсуждениях этой темы не нашёл. Не ужели ни кто Д/З не делал? Код очень интересный получается. Подозреваю, что Сергей специально, что ли... не упомянул пару фишек, что бы было над чем голову по ломать. Хотя на них темы уже изучены... Огромное спасибо за урок и Д/З!!!
@aleksandrdrobyshev7623
@aleksandrdrobyshev7623 4 жыл бұрын
А ну-ну, расскажи.. а то я пока на твой комент не наткнулся, не подумал даже про удаление. Ты деструктором удаляешь, да?
@BrownAleks
@BrownAleks 3 жыл бұрын
@@aleksandrdrobyshev7623 Да. Просто в диструктор прописываешь дикримент { Count- -;} Чтобы заметить этот эффект от удаления, нужно экземпляр класса создавать в отдельной функции, чтобы после того как она завершиться, созданные переменные и экземпляры классов в ней были удалены автоматический (при этом в экземплярах вызываются диструкторы). Или нужно объявлять указатели и в них, через оператор "new" прописывать адрес созданного экземпляра. Ну и естественно когда вздумается его удалить пользуемся оператором "delete". Можно массив указателей объявить и в каждую ячейку положить адрес вновь созданного экземпляра. И т.д. есть ещё несколько способов. (но об этом увидите в следующих уроках) Таким образом после создания и после удаления, переменная "Count" меняется соответственно.
@rezvanovtv7254
@rezvanovtv7254 3 жыл бұрын
3:38 в конструкторе: count++
@user-mykyta_vyshniakov
@user-mykyta_vyshniakov 3 жыл бұрын
В конструкторе яблоко добавляем инкремент счетчика.
@youjustillusion536
@youjustillusion536 4 жыл бұрын
конструктор вызывается каждый раз при создании нового объекта, следовательно записываем inside the constructor count ++;
@temshik.invalid
@temshik.invalid 3 жыл бұрын
3:00
@user-kh5lg4hh3u
@user-kh5lg4hh3u Жыл бұрын
Блин, долго думал, а оказалось крайне просто. Для тех, кто делает ДЗ объясняю - вам нужно сделать геттер для вашего объекта (в нашем случае apple).
@user-zg9du7nu9q
@user-zg9du7nu9q 6 ай бұрын
достаточно ввести паблик переменную.
@TGrod
@TGrod 2 жыл бұрын
Такс, возврат в прошлое. Здравствуйте. У меня вопрос: я делаю программу, в которой в базовом классе есть статические поля. Потом я от этого класса наследую другой класс и, в будущем, я буду наследовать ещё второй класс. И сам вопрос: будут ли у этих двух классов статические поля одинаковыми? Т.е. если я запишу что-то через один класс, то это и будет во втором классе? Или это будет распространяться только на первый наследованный класс, а во втором просто поле не изменится? Просто я стараюсь вводить все знания, которые получил, и со статическими полями у меня пока-что запара. До этого я еле-еле разобрался с виртуальными методами (так как VS 2019 требовала, чтобы я объявлял виртуальные методы в базовом классе, а в наследнике уже их переопределял) и при этом вообще не ведомую мне ошибку выводил, что я даже на сайте Microsoft ничего не понял (ну сейчас вроде немного разобрался). Прога кстати - графический интерфейс на основе SFML.
@user-ol9es1ch9x
@user-ol9es1ch9x Жыл бұрын
привет из 2023. Спасибо большое за уроки!
@user-ri4kr8zs6c
@user-ri4kr8zs6c 2 жыл бұрын
Подскажите пожалуйста, как сделать репост видео ?
@pluto2656
@pluto2656 6 жыл бұрын
В конструкторе класса
@expert6609
@expert6609 6 жыл бұрын
Спасибо за уроки! Я пишу первый комментарий с момента начала просмотра! Уроки просто класс! До этого учился сам по книге (освой С++ да 24 часа). А у тебя Сергей всё разжёвано на высшем уровне! По поводу static, я так понимаю, что что при создании первого экземпляра класса, создаётся "статическое" поле и присваивается ему ссылка (указатель), а при создании последующих экземпляров этого класса создается ссылка (указатель) на "статическое" поле созданное в первым экземпляром? Я правильно понял работу Static?
@user-cr1vh7ss5l
@user-cr1vh7ss5l 6 жыл бұрын
Александр Можаровский static может работать и без объявления экземпляра, не?
@shehamane3518
@shehamane3518 5 жыл бұрын
Не думаю, что так. Кажется, static - это что-то типа глобальной переменной, которую мы просто привязываем к классу
@user-rv9ox7ld1e
@user-rv9ox7ld1e 5 жыл бұрын
Это переменная из пространства имен Apple. Есть например оператор "namespase", который определяет пространство имен(Урок #125), "class" работает аналогично. Если написать перед main() "namespace Apple { int id = 0; }", затем в main() добавить "Apple::id++;" и сравнить дизассемблированный код (при отладке, правая кнопка мыши, К дизассемблированному коду), увидите что все работает одинаково. Только в классе еще можно и доступ ограничить, если объявить переменную в блоке "private".
@user-te6bm6gl3i
@user-te6bm6gl3i Жыл бұрын
А можно ли создать статическую переменую в динамической памяти(куче)?
@EgorYarosh
@EgorYarosh 5 жыл бұрын
Доброго времени суток. Уроки шикарные и намного попонятнее чем у "профессоров" в институте. Но не мог бы кто то подсказать, что такое "двойное двоеточие", т.к. используется Сергеем часто, а что это - непонятно
@UnifiedGod
@UnifiedGod 5 жыл бұрын
Это такой синтаксис, означает принадлежность к классу, Apple:: , принадлежит классу Apple
@EgorYarosh
@EgorYarosh 5 жыл бұрын
@@UnifiedGod Понял. Спасибо за ответ )
@GottyMintly
@GottyMintly 3 жыл бұрын
8:37 Мне пришло в голову, что можно инкрементировать значение счётчика в конструкторе
@gavyttop1341
@gavyttop1341 2 жыл бұрын
мне тоже)
@allaksusallaksus2402
@allaksusallaksus2402 3 жыл бұрын
Есть поле класса которое общее для всех экземпляров класса, занимает много памяти и его можно только вычислить. Вопрос как заставить компилятор не требовать инициализации статического поля?
@vraeranaz
@vraeranaz 6 жыл бұрын
(В конструкторе класса)
@cnota69
@cnota69 Жыл бұрын
5:30 За стандартом треба писати всі статичні поля з великої літери?
@user-vk1yz9sk2e
@user-vk1yz9sk2e 2 жыл бұрын
В КОНСТРУКТОРЕ СОЗДАНИЯ ОБЪЕКТА КЛАССА ИСПОЛЬЗОВАТЬ ПРЕФИКСНЫЙ(ДЛЯ НАДЁЖНОСТИ)ИНКРИМЕНТ СТАТИК ПОЛЯ COUNT
@error7654
@error7654 6 жыл бұрын
Скажите пожалуйста, такой вопрос. Объекты класса имеют разные адреса, а как я понимаю конкретный метод класса у разных экземпляров находится по одному и тому же адресу. Такая же история с static. Я правильно понимаю ?
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Не правильно, методы тоже у всех разные. Только если они не статик. static методы мы в ближайшее время тоже рассмотрим.
@error7654
@error7654 6 жыл бұрын
#SimpleCode ясно, спасибо за Ваш ответ!
@user-nj3vd5wr1i
@user-nj3vd5wr1i Жыл бұрын
попал сюда, так как одногрупник рассказал об этом канале)
@sleepyNovember_project
@sleepyNovember_project 3 ай бұрын
Значит берёшь такой, и спрашиваешь у яблок: - Сколько вас там?! А яблоки отвечают тебе хором: - 3! Это static moment
@user-pm6dh6do8b
@user-pm6dh6do8b 4 жыл бұрын
В конструкторе )))
@user-wd4js9jl5z
@user-wd4js9jl5z 6 жыл бұрын
В конструкторее инкрементировать .
@GrishOK1993
@GrishOK1993 3 жыл бұрын
+
@pavlotrotsiuk6179
@pavlotrotsiuk6179 5 жыл бұрын
Нужно в конструктор написать Count++;
@sov.harlem934
@sov.harlem934 4 жыл бұрын
В конструкторе)
@firerunnew
@firerunnew Жыл бұрын
как вы переходите к следующему шагу в режиме отладки (остановки) ?
@user-lg4pt8pz1n
@user-lg4pt8pz1n Жыл бұрын
F10
@user-me5bb3ig3k
@user-me5bb3ig3k 6 жыл бұрын
В констрикторе и деструкторе.
@Amoeby
@Amoeby 3 жыл бұрын
Интересно, сколько было подписчиков на момент выхода видео? Сейчас-то 190К
@urfinkit
@urfinkit 2 жыл бұрын
Возможно в конструкторе.
@satisfiedCapybara
@satisfiedCapybara 4 жыл бұрын
В конструкторе класса.
@nikitasinsobaki
@nikitasinsobaki Ай бұрын
Создание яблока происходит в конструкторе класса
@S09346
@S09346 2 жыл бұрын
Комментарий
@etniqa3638
@etniqa3638 5 жыл бұрын
В конструкторе
@tupoy_ytub_uberi_psevdonim
@tupoy_ytub_uberi_psevdonim 2 жыл бұрын
это очень похоже как работа с указателем. только скажем хардварно зависимое
@user-iu6xg8wo8l
@user-iu6xg8wo8l Ай бұрын
Что-то я попробовал template и static для подсчета, нифига не работает( А отдельно работает
@user-zj4wv7ud1p
@user-zj4wv7ud1p 5 жыл бұрын
Может все видео про с++ пролайкать до дырок???
@artemtereza669
@artemtereza669 5 жыл бұрын
в конструкторе
@user-gl7pe3io7p
@user-gl7pe3io7p 3 жыл бұрын
В конструкторе скорее всего, не бейте если не правильно :)
@mikesteinar2713
@mikesteinar2713 3 жыл бұрын
commentariy
@vladalu9794
@vladalu9794 6 жыл бұрын
в конструкторе бро
@user-bw1fh9pd3i
@user-bw1fh9pd3i 3 жыл бұрын
Я только не понимаю, зачем в конструкторе использовать This , если можно просто указать другие вх.параметры например: weight1 color1
@user-or1hy4xz8u
@user-or1hy4xz8u 2 жыл бұрын
ну, ты понял, зачем?
@user-tq3zn1wm1k
@user-tq3zn1wm1k Жыл бұрын
@@user-or1hy4xz8u можно, только нахрена плодить сущности? Обращаясь к this ты не создаёшь никаких копий, а говоришь компилятору "Слышь, обратился к этому (от анг. this) объекту (который в данный момент обращаешься), и достал от туда переменную/функцию." А дальшей делай с ней че хочешь. В твоем варианте ты создаёшь еще одну переменную, которую где то надо хранить. Что же будет когда ты начнёшь обрабатывать железо? Или графический процессор, где за каждый такт нужно отрисовывать, ну скажем 9к полигонов, например? Загадка Жака Фреско, на размышление дается ассемблер.
@justboy4743
@justboy4743 Жыл бұрын
@@user-tq3zn1wm1k шедеврально ответил)
1 класс vs 11 класс (рисунок)
00:37
БЕРТ
Рет қаралды 4,1 МЛН
Barriga de grávida aconchegante? 🤔💡
00:10
Polar em português
Рет қаралды 12 МЛН
Разбираем основы Kafka и RabbitMQ
26:54
Digital train | Alex Babin
Рет қаралды 6 М.
Java SE. Урок 18. Модификатор static
9:21
Follow the white rabbit
Рет қаралды 53 М.
Раннее и Позднее Связывание
12:44
Volodya Mozhenkov
Рет қаралды 40 М.