JHB의 프로그래밍 삽질기

함수 이름 앞에 ::가 붙는 경우 본문

PROGRAMMING/C C++ MFC

함수 이름 앞에 ::가 붙는 경우

roter 2010.04.07 17:26

::가 붙는 경우 글로발을 의미한다.

예를 들어 글로발로 int a가 선언되어 있고 클래스 내에서 int a가 선언되어 있는 경우

클래스 내에서 사용하는 a는 클래스 내에서 선언한 a이다.

이때 글로발 변수인 a를 사용하고 싶다면 ::a를 사용하면 되겠다.

아래는 이해를 돕기 위한 소스

#include <iostream>

using namespace std;

int a = 3;

void test()
{
          cout << "test global" << endl;
}

class Ctest
{
public:
          int a;
          Ctest()
          {
                    a = 1;
                    cout << "test() : ";
                    test();
                    cout << "::test() : ";
                    ::test();

                    a++;
                    cout << "a : " << a << "     ::a : " << ::a << endl;
          }

          void test()
          {
                    cout << "test member" << endl;
          }

};

int main()
{
          Ctest test;
          return 0;
}

실행 결과는
test() : test member
::test() : test global
a : 2   ::a : 3
이해가 되시지용~?(웬만하면 이름 안겹치는게 좋지만.. 글로발 변수 및 함수 사용에는 :: 붙이는 습관을 기르는게 좋을듯!)

0 Comments
댓글쓰기 폼