다른 Scope에 같은 이름을 사용하는 변수/함수가 있을 경우
현재 같은 scope에 있는 변수/함수를 우선적으로 참조하고 호출하게 된다.
때에 따라서 scope 내에서 (전역 변수와)같은 이름의 지역 변수를 사용하다가도 전역 변수를 사용해야하는 경우가 생기는 데, 그 때 Scope 연산자를 사용하여 전역 변수를 참조할 수 있다.
위 같은 경우에 Scope연산자를 사용하여 외부의(전역의) 변수/함수를 참조/호출할 수 있다.
Example
#include <iostream>
#include <cstdlib>
int min(int a, int b){
std::cout << "my min" << std::endl;
return (a > b ? b : a);
}
class Data{
public :
int min(int a, int b){
std::cout << "Data's min" << std::endl;
return (a > b ? b : a);
}
int getRandomMin(){
int a = rand();
int b = rand();
std::cout << "a : " << a << " b : " << b << std::endl;
return (min(a, b));
}
int getRandomMinUsingOtherMin(){
int a = rand();
int b = rand();
std::cout << "a : " << a << " b : " << b << std::endl;
return (::min(a, b));
}
};
int main(){
Data dt;
std::cout << dt.getRandomMin() << std::endl;
std::cout << dt.getRandomMinUsingOtherMin() << std::endl;
return (0);
}
output >
Data's min
16807
a : 1622650073 b : 984943658
my min
984943658