C++ 범위 지정 연산자란?
C++에서 범위 지정 연산자(scope resolution operator)인 ::는 다양한 용도로 활용되는 중요한 연산자입니다. 대표적인 사용 사례는 다음과 같습니다.
- 전역 변수 접근: 지역 변수와 전역 변수의 이름이 동일할 때, 범위 지정 연산자를 사용하여 전역 변수에 접근할 수 있습니다.
- 클래스 외부 함수 정의: 클래스 멤버 함수를 클래스 외부에서 정의할 때 사용됩니다.
- 정적 변수 접근: 클래스의 static(정적) 변수나 정적 멤버 함수에 접근할 때 사용됩니다.
범위 지정 연산자 예제
다음은 C++에서 범위 지정 연산자를 사용하는 예제 코드입니다.
#include <iostream>
using namespace std;
char a = 'm';
static int b = 50;
int main() {
char a = 's';
cout << "The static variable : " << ::b;
cout << "\nThe local variable : " << a;
cout << "\nThe global variable : " << ::a;
return 0;
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
The static variable : 50
The local variable : s
The global variable : m
코드 분석
이 예제에서 주목해야 할 부분을 살펴보겠습니다.
1. 이름 충돌 상황: 전역 변수 a(값: 'm')와 main() 함수 내부의 지역 변수 a(값: 's')가 같은 이름으로 선언되어 있습니다. 이런 경우 일반적으로 지역 변수가 우선권을 가지므로, a만 출력하면 지역 변수의 값인 's'가 나타납니다.
2. 전역 변수 접근: 변수 앞에 ::를 붙여 ::a로 작성하면 컴파일러에게 전역 범위의 변수를 참조하라고 명시적으로 알려주게 되며, 결과적으로 전역 변수의 값인 'm'이 출력됩니다.
3. 정적 변수 접근: 마찬가지로 ::b를 통해 전역으로 선언된 static 변수의 값 50에 접근하여 출력합니다.
이처럼 범위 지정 연산자는 변수 이름이 중복되는 상황에서 코드의 의도를 명확하게 표현하고, 원하는 범위의 변수에 정확히 접근할 수 있도록 도와주는 필수적인 도구입니다.