Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Статические переменные классов

8.1K
18 августа 2005 года
cupec
33 / / 26.06.2005
Привет всем!
Вопрос следующий: как использовать в классе статические переменные, т.е. чтобы все объекты этого класса имели одинаковые данные, выраженные статическими переменными.
Если можно кратенький примерчик.
Да и еще - для чего в классах нужны статические функции?
492
18 августа 2005 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by cupec
Привет всем!
Вопрос следующий: как использовать в классе статические переменные, т.е. чтобы все объекты этого класса имели одинаковые данные, выраженные статическими переменными.
Если можно кратенький примерчик.
Да и еще - для чего в классах нужны статические функции?



class A
{
public:
static int b;
static int foo(void)
{
return b;
}
};

int A::b = 10;
int A::foo(void); //Правда я не уверен в этой строке

Примерно так.

3
18 августа 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by alibabaich

int A::foo(void); //Правда я не уверен в этой строке


Правильно, что неуверен. :)

Цитата:
Originally posted by cupec

Да и еще - для чего в классах нужны статические функции?


Статические методы класса - по сути обычные функции не члены класса объявленные друзьями класса, т.е. им не передается инф. об экземпляре данного класса, поэтому его нужно указывать (передавать) явно, если в этом есть необходимость.

Код:
class A
{
private:
  int data;

public:
  static void func(A* pA);
};

void A::func(A* pA)
{
  data = 0;      // здесь ошибка, т.к. нет инф. об экземпляре
  pA->data = 0;  // здесь все нормально, заметь, что обратились к приватному члену
}

Аналогично дружественной функции:
Код:
class A
{
friend void func(A* pA);
private:
  int data;
};

void func(A* pA)
{
  pA->data = 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог