25_클래스의 정적 구성원 변수

1764 단어

0. 구성원 변수의 회고

  • 대상명을 통해 접근 가능public 구성원 변수
  • 각 대상의 구성원 변수는 전속적
  • 구성원 변수는 객체 간에 공유할 수 없음
  • 1. 새로운 수요

  • 프로그램이 실행되는 동안 특정한 유형의 대상 수를 통계
  • 프로그램의 안전성을 보증한다(전역 변수를 사용할 수 없다)
  • 현재 개체 수
  • 프로그래밍 지침: 솔루션
    #include 
    
    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
    ", gTest.getCount()); printf("count = %d
    ", t1.getCount()); printf("count = %d
    ", t2.getCount()); Test* pt = new Test(); printf("count = %d
    ", pt->getCount()); delete pt; printf("count = %d
    ", gTest.getCount()); return 0; }

    결과 출력:
    count = 3
    count = 3
    count = 3
    count = 4
    count = 3
    

    2. 정적 구성원 변수

  • 정적 구성원 변수는 전체 클래스에 속한다
  • 정적 구성원 변수의 생명기는 그 어떠한 대상에도 의존하지 않고 전체 프로그램의 운행 주기와 같은 생명주기
  • 클래스 이름을 통해 공유 정적 구성원 변수에 직접 접근할 수 있음
  • 모든 대상 공유 클래스의 정적 구성원 변수
  • 대상명을 통해 공유 정적 구성원 변수에 접근할 수 있음
  • 3. 정적 구성원 변수의 특성 및 문법 규칙

  • 특징
  • 정의할 때 직접 통과static 키워드 수식
  • 정적 구성원 변수는 클래스 밖에서 단독으로 공간을 분배해야 한다
  • 정적 구성원 변수는 프로그램 내부에서 전역 데이터 영역에 있음
  • 문법 규칙: Type ClassName::VarName = value;
  • 4. 소결

  • 클래스에서 static 키워드를 통해 정적 구성원 변수를 정의할 수 있음
  • 정적 구성원 변수는 클래스 소유에 속한다
  • 각 객체에서 정적 구성원 변수에 액세스할 수 있음
  • 정적 구성원 변수가 전역 데이터 영역에 공간 분배
  • 정적 구성원 변수의 생명기는 프로그램 운행기
  • 이다

    좋은 웹페이지 즐겨찾기