Автор Александр задал вопрос в разделе Другие языки и технологии
Статические поля и методы в С++. Подскажите что это и примеры если можно. Гугл затерялся в своих знаниях) и получил лучший ответ
Ответ от ?????? Зелёный змий ??????[гуру]
Статические переменные не входят в состав объекта. Они существуют в единственном экземпляре, всегда, независимо от количества созданных объектов.
По сути - это просто глобальная переменная, помещенная в пространство имен класса. Если доступ позволяет, то к ней можно добраться не имея объекта класса. К переменным-членам можно добраться только через объект
class A
{
public:
int a
static int b;
};
int main()
{
A::b; // статик
A var;
var.a; // через объект
}
Статические функции - примерно так же. По сути - это глобальная функция, помещенная в пространство имен класса. Не имеет доступа к переменным-членам. К функции-членам можно добраться только через объект.
class A
{
public:
int a
void Method();
static int b;
static void Function();
};
int main()
{
A::Function(); // статик
A var;
var.Method(); // через объект
}
Добрый день.
Статические поля и методы отличаются от обычных тем, что для их использования и вызова не требуется создание экземпляра класса. То есть MyClass->MyMethod();.
class C
{
public:
static int i;
static int func() {return i;}
};
int C::i = 0;
C::func();
Каждый объект - экземпляр класса - имеет свой собственный набор переменных состояния. При вызове метода класса ему передается неявный параметр - указатель на структуру с этими переменными состояния. Если метод объявден как static, то он не получает этот указатель и не может обращаться к этим полям. Может иметь доступ только к полям, которые также объявлены как static. Ресурсы под них выделяются отдельно, поэтому они есть даже тогда, когда ни одного экземпляра класса не создано.
Класс это тип данных. Например как int или float. Он произошёл от понятия структуры.
Только в отличии от неё в его составе могут быть не только переменные но и функции.
Вы создали класс после чего вы создаете экземпляр класса (объект). По идее все методы класса работают с переменными конкретного экземпляра класса. То есть например у вас есть класс "шарик" у него есть параметр скорость. Вы можете создать хоть сотню шариков и у каждого будет своя собственная переменная хранящая скорость. Но вот статическая переменная это такая переменная которая одна на все шарики. И статический метод один и тот же для всех обьектов (шариков). К примеру статическая переменная может хранить количество всех шариков которые вы создали из вашего класса шариков . При этом что важно это не какая то глобальная переменная а переменная которая хранится внутри класса и если надо может быть доступна только для обьектов класса.
Кратко: статический метод это метод который один для всех экземпляров класса
статическое поле (переменная) это переменная которая одна на все экземпляры
класса.
Динамический это тот который есть свой у каждого экземпляра.