//정적 멤버 함수와 일반 멤버함수

#include <iostream>

 

using namespace std;

 

class Test {

        int member_val;

        static int class_val;  //C++ : 정적 멤버변수 / Java : 클래스 변수

 

public:

        //void Test::member_function(Test *const this)

        void member_function() {

               cout << "member_function()" << endl;

               member_val=0;                 //this->member_val=0;

               class_val=0;                  //class_val=0;

 

               member_function();            //this->member_function()

               class_function();             //class_function();

        }

 

        //void Test::class_function();

        static void class_function() { //C++ : 정적 멤버함수 / Java : 클래스 함수

               cout << "class_function()" << endl;

               //member_val=0;               //this->member_val=0;         =>에러!

               class_val=0;                  //class_val=0;

 

 

               //member_function();          //this->member_function()     => 에러!

               class_function();             //class_function();

        }

};

 

int Test::class_val=0; //링커에게 심볼의 위치를 알려줘야함

 

// 정적 멤버 함수에는 정적 멤버만 접근이 가능

// 일반 멤버 함수에는 모든 멤버에 접근이 가능

 

int main(void) {

        Test t;

        t.member_function();

        Test::class_function();       //Java : Test.class_function();

 

        return 0;

}

'Developer > Design Patterns' 카테고리의 다른 글

C++ Thread 클래스 구현  (0) 2014.05.17
함수 포인터  (0) 2014.05.17
thiscall  (0) 2014.05.17
Iterator Pattern  (0) 2012.12.07
싱글톤 패턴 for Java  (0) 2012.07.04
Posted by No names
,