Ссылаясь на переменные - члены
через доступ переменные члены имя общественного объекта
каждого объекта переменных - членов являются эксклюзивные
переменные - члены не могут быть общими (переменные - члены , как правило , устанавливается в частных) между объектами
Новый спрос
статистик во время выполнения программы количества объектов класса
процедур обеспечения безопасности (не может использовать глобальные переменные)
число всегда можно получить текущий объект
Попробуйте решение
#include <stdio.h> класс Test
{ частное :
INT mCount;
общественности :
Test (): mCount ( 0 )
{
mCount ++ ;
} ~ Test ()
{ - mCount;
} INT GetCount ()
{ вернуть mCount;
}
};
Тест GTEST; Int Main ()
{
Test t1;
Тест t2;
Е ( " Count =% d \ п " , gTest.getCount ());
Е (
" Count =% d \ п " , t1.getCount ());
Е ( " Count =% d \ п " , t2.getCount ());
вернуться 0 ;
}
Такой подход явно выше провал.
Функция может быть решена с помощью глобальной переменной, но не отвечает требованиям безопасности пользователя. Для достижения потребительского спроса, мы будем дебютировать статической переменной.
Может быть определены в C ++ статических переменного - членов
- статические переменные - членов принадлежит к классу всех
- жизненный цикл переменных членов статических не зависит от какого- либо объекта
- быть публичным статическим переменными члены доступа непосредственно через имя класса
- статические объекты всех классов акций переменные - члены
- может получить доступ к общим переменным статическим членам от имени объекта
Статические характеристики переменных членов
- при определении непосредственно путем изменения статического ключевого слова
- статические переменные - члены должны выделить отдельное пространство за пределами класса
- статическая переменная член находится во внутренних процедур и глобальных данных
Грамматика правила
Тип ClassName :: VarName = значение
Если в классе, так что статическая переменная определена:
частные: статические INT mCount;
会出现编译错误,提示在链接的时候找不到mCount这个变量所对应的存储空间。
既然是静态成员变量,那么这个变量就不隶属于任何的对象了。因此需要单独定义它,使得编译器知道这个静态成员变量需要在全局数据区分配存储空间。
#include <stdio.h>
class Test
{
private:
static int cCount;
public:
Test()
{
cCount++;
}
~Test()
{
--cCount;
}
int getCount()
{
return cCount;
}
};
int Test::cCount = 0;
Test gTest;
int main()
{
Test t1;
Test t2;
printf("count = %d\n", gTest.getCount());
printf("count = %d\n", t1.getCount());
printf("count = %d\n", t2.getCount());
Test* pt = new Test();
printf("count = %d\n", pt->getCount());
delete pt;
printf("count = %d\n", gTest.getCount());
return 0;
}
小结:
类中可以通过static关键字定义静态成员变量
静态成员变量隶属于类所有
每一个对象都可以访问静态成员变量
静态成员变量在全局数据区分配空间
静态成员变量的生命周期为程序运行期