2014-11-28 3 views
1

이중 콜론 "::"앞에 네임 스페이스가 붙지 않은 경우이 구문의 의미는 무엇입니까?네임 스페이스 구문 ":: Foo"

Foo 클래스가 있다고 가정합니다. 그리고 코드 어딘가에 : Foo와 같은 것이 있습니다.

답변

3

전역 네임 스페이스를 나타냅니다.

네임 스페이스 N이 전역 네임 스페이스로 묶여 있기 때문에이 문장

std::cout << ::x + N::x + x << std::endl; 

당신이 ::N::x 대신 N::x을 쓸 수 있음을 고려 예를

#include <iostream> 

int x = 10; 

namespace N 
{ 
    int x = 20; // Or you could write int x = 10 + ::x; 
} 

int main() 
{ 
    int x = 30; 

    std::cout << ::x + N::x + x << std::endl; 
} 

이 코드를 살펴 보자.

+0

내가 네임 스페이스 std를 사용하여 선언하면; 맨 위에, 작성할 수 있습니다 :: cout << ....... << :: endl; 대신에? –

+0

@cpp_noname 가능합니다. 정규화 된 이름 조회에 대해 읽어야합니다. –