Latest web development tutorials

C ++ 네임 스페이스

자라 두 학생라는 클래스가 명확하게, 우리는 외부 이름을 사용하여 구별하기 위해,이 때의 상황을 상상 같은 집 주소 또는 부모 일부 추가 정보를 사용했다 이름 등

같은 상황은 또한 C ++ 응용 프로그램에 나타납니다. 예를 들어, 사용 가능한 다른 라이브러리에서 동일한 기능의 XYZ도 있습니다, 함수 이름 XYZ ()을 작성할 수 있습니다 (). 따라서, 컴파일러는 당신이 XYZ () 함수를 사용하는 것을 확인할 수 없습니다.

따라서, 상기 과제를 해결하기위한스페이스의 개념의 도입은, 등등 같은 이름의 함수, 클래스 변수를 다른 라이브러리를 구별하기위한 추가 정보로 사용될 수있다.컨텍스트를 정의 네임 스페이스를 사용. 본질적으로, 네임 스페이스 범위의 정의입니다.

네임 스페이스를 정의

다음으로, 공간의 이름다음에 스페이스 키워드 공간정의 :

namespace namespace_name {
   // 代码声明
}

네임 스페이스와 함수 나 변수를 호출하려면, 다음과 같이 네임 스페이스의 이름으로 선행해야합니다

name::code;  // code 可以是变量或函数

보자 어떻게 기업 및 기타 변수 나 함수에 대한 네임 스페이스 정의 :

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
int main ()
{
 
   // 调用第一个命名空间中的函数
   first_space::func();
   
   // 调用第二个命名空间中的函数
   second_space::func(); 

   return 0;
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

Inside first_space
Inside second_space

명령어를 사용하여

당신이 네임 스페이스 이름 접두사 네임 스페이스를 사용할 수없는 경우 있도록은사용하는 네임 스페이스 지시문을 사용할 수 있습니다.이 지시어는 이후의 코드가 지정된 네임 스페이스 이름을 사용하는 컴파일러를 알려줍니다.

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
using namespace first_space;
int main ()
{
 
   // 调用第一个命名空间中的函数
   func();
   
   return 0;
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

Inside first_space

사용 지침은 네임 스페이스의 특정 항목을 지정하는 데 사용될 수있다. 당신은 표준 네임 스페이스의 cout 섹션을 사용하려는 경우 예를 들어, 다음과 같은 문장을 사용할 수 있습니다 :

using std::cout;

당신이 접두사로 네임 스페이스 이름을 추가 할 수 없습니다 cout을 사용하지만, 다음과 같이표준 네임 스페이스 기타 항목은 여전히 접두사로 네임 스페이스 이름을 추가 할 필요가 후속 코드 :

#include <iostream>
using std::cout;

int main ()
{
 
   cout << "std::endl is used with std!" << std::endl;
   
   return 0;
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

std::endl is used with std!

정상 범위 규칙을 따르 도입 지침을사용하여 이름을 지정합니다.범위가 끝날 때까지 처음 볼using 지시문에서 이름.이 경우, 엔티티의 정의의 범위에 동일한 이름이 숨겨진.

불연속 공간

네임은 여러 부분으로 정의 될 수 있으므로, 스페이스를 별도로 정의 된 조성물을 여러 부분으로 구성된다. 네임 스페이스의 다양한 구성 요소는 여러 파일에 분산 될 수있다.

필요성의 스페이스 부분이 다른 파일에 정의 된 이름을 요청하는 경우, 따라서 여전히 이름을 선언해야한다. 다음 네임 스페이스 정의는 새로운 요소를 추가하는 기존 네임 스페이스 될 수 있습니다, 새로운 네임 스페이스를 정의 할 수 있습니다 :

namespace namespace_name {
   // 代码声明
}

중첩 된 네임 스페이스

다음과 같이 네임 스페이스, 네임 스페이스의 다른 네임 스페이스를 정의 할 수 있습니다, 중첩 될 수 있습니다 :

namespace namespace_name1 {
   // 代码声明
   namespace namespace_name2 {
      // 代码声明
   }
}

당신은 중첩 된 네임 스페이스 멤버에 액세스 할 수 :: 연산자를 사용할 수 있습니다 :

// 访问 namespace_name2 中的成员
using namespace namespace_name1::namespace_name2;

// 访问 namespace:name1 中的成员
using namespace namespace_name1;

위의 성명에서, 당신은 또한 사용할 수 다음과 같이 namespace_name2 요소의 범위 내에서, namespace_name1를 사용하는 경우 :

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
   // 第二个命名空间
   namespace second_space{
      void func(){
         cout << "Inside second_space" << endl;
      }
   }
}
using namespace first_space::second_space;
int main ()
{
 
   // 调用第二个命名空间中的函数
   func();
   
   return 0;
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

Inside second_space