ABOUT ME

Contact.
Email:yj.anthonyjo@gmail.com
Introduce : CS Student.

Today
-
Yesterday
-
Total
-
  • C++ - 범위지정연산자(Scope Resolution Operator)
    프로그래밍/C++ 2021. 7. 1. 00:37
    반응형

    기본적으로 특정 namespace안에 선언된 것들에 접근할 수 있게 해준다.

    비슷한 것을 찾자면, 구조체의 .(->), 클래스의 . 등이 있을 것 같다.

    //사용예제
    //namespace의 함수에서 선언과 정의부 나누기.
    //namespace안에 함수선언을 해주고, 정의부에서 범위지정연산자 사용하기.
    #include<iostream>
    namespace bestcom {
    	void func(void);
    }
    namespace progcom {
    	void func();
    }
    void main() {
    	bestcom::func();
    	progcom::func();
    }
    void bestcom::func() {
    	std::cout << "Best함수" << std::endl;
    }
    void progcom::func() {
    	std::cout << "Prog함수" << std::endl;
    }

     

     

    그리고 특이한 기능을 하나 더 수행해준다.

    ::전역에서선언된것(함수, 변수 등...)

    위와 같이 사용할 경우, 전역에서 선언한 것에 직접 접근할 수 있다.

    특히 어떠한 같은 이름의 지역변수에 의해 무시된 전역변수에 접근할 수 있게 해준다.

    //범위지정연산자(scope resulution operator)의 또 다른 기능.
    //전역변수와 같은 이름의 지역변수가 있다면 우선순위상 전역변수는 무시당한다.
    //하지만 만약 전역변수도 사용하고 싶다면 어떻게 해야할까?
    //범위지정연산자를 이용하면 된다.
    //전역 아이템(?)에 대한 namespace는 ''이다(?) 추측하여 볼 때 맞는 듯하다.
    #include<iostream>
    using namespace std;
    int n = 3;
    int func1(int x) {
    	return x * x;
    }
    int main() {
    	int n = 2;
    	cout << ::func1(3) << endl;
    	cout << n << ' ' << ::n << endl;
    }

    이를 통해 추측할 수 있는 것은 전역에 대한 namespace는 ''일 것이라는 거다.

    이는 추측이고 확실한 정보가 아니다.

    추후에 보다 더 자세히 알아보도록 하겠다.

    반응형

    댓글

Designed by Tistory.