-
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는 ''일 것이라는 거다.
이는 추측이고 확실한 정보가 아니다.
추후에 보다 더 자세히 알아보도록 하겠다.
반응형'프로그래밍 > C++' 카테고리의 다른 글
C++ - 인라인 함수(inline function) (0) 2021.06.30 C++ - 매개변수의 default값과 함수 오버로드(overload) (0) 2021.06.29 C++ - 함수 선언부에서의 default값에 대한 고찰 (0) 2021.06.29