статическое поле



Автор Александр задал вопрос в разделе Другие языки и технологии

Статические поля и методы в С++. Подскажите что это и примеры если можно. Гугл затерялся в своих знаниях) и получил лучший ответ

Ответ от ?????? Зелёный змий ??????[гуру]
Статические переменные не входят в состав объекта. Они существуют в единственном экземпляре, всегда, независимо от количества созданных объектов.

По сути - это просто глобальная переменная, помещенная в пространство имен класса. Если доступ позволяет, то к ней можно добраться не имея объекта класса. К переменным-членам можно добраться только через объект
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. Ресурсы под них выделяются отдельно, поэтому они есть даже тогда, когда ни одного экземпляра класса не создано.

Ответ от Drumpel[гуру]
Класс это тип данных. Например как int или float. Он произошёл от понятия структуры.
Только в отличии от неё в его составе могут быть не только переменные но и функции.
Вы создали класс после чего вы создаете экземпляр класса (объект). По идее все методы класса работают с переменными конкретного экземпляра класса. То есть например у вас есть класс "шарик" у него есть параметр скорость. Вы можете создать хоть сотню шариков и у каждого будет своя собственная переменная хранящая скорость. Но вот статическая переменная это такая переменная которая одна на все шарики. И статический метод один и тот же для всех обьектов (шариков). К примеру статическая переменная может хранить количество всех шариков которые вы создали из вашего класса шариков . При этом что важно это не какая то глобальная переменная а переменная которая хранится внутри класса и если надо может быть доступна только для обьектов класса.
Кратко: статический метод это метод который один для всех экземпляров класса
статическое поле (переменная) это переменная которая одна на все экземпляры
класса.
Динамический это тот который есть свой у каждого экземпляра.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Статические поля и методы в С++. Подскажите что это и примеры если можно. Гугл затерялся в своих знаниях)
Магнитотерапия статическое поле на Википедии
Посмотрите статью на википедии про Магнитотерапия статическое поле
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*