class A
{
private:
int data;
public:
static void func(A* pA);
};
void A::func(A* pA)
{
data = 0; // здесь ошибка, т.к. нет инф. об экземпляре
pA->data = 0; // здесь все нормально, заметь, что обратились к приватному члену
}
Статические переменные классов
Вопрос следующий: как использовать в классе статические переменные, т.е. чтобы все объекты этого класса имели одинаковые данные, выраженные статическими переменными.
Если можно кратенький примерчик.
Да и еще - для чего в классах нужны статические функции?
Цитата:
Originally posted by cupec
Привет всем!
Вопрос следующий: как использовать в классе статические переменные, т.е. чтобы все объекты этого класса имели одинаковые данные, выраженные статическими переменными.
Если можно кратенький примерчик.
Да и еще - для чего в классах нужны статические функции?
Привет всем!
Вопрос следующий: как использовать в классе статические переменные, т.е. чтобы все объекты этого класса имели одинаковые данные, выраженные статическими переменными.
Если можно кратенький примерчик.
Да и еще - для чего в классах нужны статические функции?
class A
{
public:
static int b;
static int foo(void)
{
return b;
}
};
int A::b = 10;
int A::foo(void); //Правда я не уверен в этой строке
Примерно так.
Цитата:
Originally posted by alibabaich
int A::foo(void); //Правда я не уверен в этой строке
int A::foo(void); //Правда я не уверен в этой строке
Правильно, что неуверен. :)
Цитата:
Originally posted by cupec
Да и еще - для чего в классах нужны статические функции?
Да и еще - для чего в классах нужны статические функции?
Статические методы класса - по сути обычные функции не члены класса объявленные друзьями класса, т.е. им не передается инф. об экземпляре данного класса, поэтому его нужно указывать (передавать) явно, если в этом есть необходимость.
Код:
Аналогично дружественной функции:
Код:
class A
{
friend void func(A* pA);
private:
int data;
};
void func(A* pA)
{
pA->data = 0;
}
{
friend void func(A* pA);
private:
int data;
};
void func(A* pA)
{
pA->data = 0;
}