본문 바로가기

Native/C++

정적 멤버 함수

[code]// objCnt2.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//

#include "stdafx.h"
class Count
{
private:
     int Value;
     static int Num;
public:
     Count() { Num++; }
     ~Count() { Num--; }

     /*
     객체의 개수를 출력하는 OutNum 함수도 개별 객체에 대한 함수가 아니기 때문에
     정적 멤버 함수로 수정할 수 있다. OutNum 함수가 객체로부터 호출되지 않으므로
     이제 객체가 전혀 생성되지 않은 상태, 즉 Num이 0인 상태에 대한 출력도 가능하다.
     정적 멤버 함수가 아니면 이런 호출은 불가능하다. main에서 지역 객체 C를
     생성하기 전에 Count::OutNum()을 호출했는데 이 호출문은 0을 출력하며 아직
     생성된 객체가 없다는 것을 보여 준다.
    */

     static void InitNum() {
         Num=0;
     }

     static void OutNum() {
         printf("현재 객체 개수 = %d\n",Num);
     }
};
int Count::Num;


int _tmain(int argc, _TCHAR* argv[])
{
    Count::InitNum();
    Count::OutNum();

    Count C,*pC;
    C.OutNum();

    pC=new Count;
    pC->OutNum();
    delete pC;

    pC->OutNum();
    printf("%d",sizeof(C));

    return 0;
}[/code]

'Native > C++' 카테고리의 다른 글

상수 멤버  (0) 2013.10.02
정적 멤버변수 이용  (0) 2013.10.02
정적 맴버 변수  (0) 2013.10.02
[.NET] wchar_t 타입  (0) 2013.10.02
정보은폐  (0) 2013.10.02