::은 범위 지정 연산자이다.
두 가지 방식으로 사용할 수 있는데
namespace Namespace1
{
void function1() {...}
}
위와 같은 구성인 경우
Namespace1::method1() 로 function1을 호출하는 방식이다.
다른 여러 NameSpace들에 function1이 있는 경우 특정 함수를 구분해서 호출하기 위해 사용한다.
class ClassA
{
void methodA() {...}
}
class ClassB
{
void methodA() {...}
}
클래스의 경우도 동일하다.
ClassA::methodA 와 ClassB::methodA 로 이름은 같지만 다른 함수 둘을 구분지어 사용할 수 있다.
void function1() {...}
void main()
{
void function1() {...}
}
전역함수와 지역함수가 같은 이름인 경우에 구분하기 위해 사용하는데, 위의 경우 main 안에서 ::function1은 전역함수 function1을 의미하고 function1은 지역함수 function1을 의미한다.
전역변수, 지역변수 구분에도 사용가능하다.