СобеЗ С++ 🚀 Часть 3

❓ Что означает статическая (static) переменная /и static function в C++?

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

📢 Когда мы объявляем static в заголовочном файле, мы сообщаем компилятору о существовании статической переменной, но на самом деле не определяем её (это похоже на предварительное объявление). Поскольку статические переменные не являются частью экземпляров класса (они обрабатываются аналогично глобальным переменным и инициализируются при запуске программы), вы должны явно определить статическую переменную за пределами класса, в глобальной области.

❓ Что означает static function в C++?

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

✅ static function не имеют указателя this

✅ static function не могут быть виртуальными

✅ static function не могут обращаться к нестатическим членам

✅ Модификаторы const и volatile недоступны для static function.

✅ На практике, статическая функция означает, что вы можете вызывать такие функции без создания экземпляра класса. Если у вас есть статическая функция void bar() в классе Foo, вы можете вызвать её так: Foo::bar(), не создавая экземпляр класса Foo.

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

✅ A virtual member - это что-то, что напрямую не связано с классом, а только с экземпляром. "Виртуальная функция" - это (по определению) функция, которая динамически связывается, т.е. правильная реализация выбирается во время выполнения в зависимости от динамического типа данного объекта. Поэтому, если нет объекта, не может быть виртуального вызова.

#код #интервью #ответ #айти #itвроссии #IT #программирование #программист
СобеЗ С 🚀 Часть 3 | Сетка — новая социальная сеть от hh.ru
СобеЗ С 🚀 Часть 3 | Сетка — новая социальная сеть от hh.ru СобеЗ С 🚀 Часть 3 | Сетка — новая социальная сеть от hh.ru
repost

172

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь