Первый класс переменных членов статических 25 класса

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

Новый спрос
статистик во время выполнения программы количества объектов класса
процедур обеспечения безопасности (не может использовать глобальные переменные)
число всегда можно получить текущий объект

Попробуйте решение

#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关键字定义静态成员变量
静态成员变量隶属于类所有
每一个对象都可以访问静态成员变量
静态成员变量在全局数据区分配空间
静态成员变量的生命周期为程序运行期

 

рекомендация

отwww.cnblogs.com/-glb/p/11874136.html