C ++의 네임 스페이스에 대해 알아야 할 모든 것



이 기사는 C ++의 네임 스페이스에 대한 상세하고 포괄적 인 지식을 제공합니다. 모든 프로그램에서 다양한 유형과 용도입니다.

C ++의 네임 스페이스는 코드를 논리적 그룹으로 구성하고 특히 코드베이스에 여러 라이브러리가 포함 된 경우 발생할 수있는 이름 충돌을 방지하는 데 사용됩니다. 이 기사에서는 다음과 같은 포인터를 다룹니다.

네임 스페이스의 필요성

상황을 생각해 보면, 우리는 abc ()라는 함수가있는 코드를 작성하고 있고 동일한 함수 abc ()를 가진 또 다른 사전 정의 된 라이브러리를 사용할 수 있습니다. 이제 컴파일 할 때 컴파일러는 코드 내에서 참조하는 abc () 함수의 버전을 알 수 없습니다.





C ++의 네임 스페이스

이 난이도를 극복하기 위해 네임 스페이스가 설계되고 다른 라이브러리에서 사용 가능한 동일한 이름으로 유사한 함수, 변수, 클래스 등을 구별하기위한 추가 정보로 사용됩니다. 네임 스페이스를 사용하여 이름이 정의되는 컨텍스트를 정의 할 수 있습니다. 본질적으로 네임 스페이스는 범위를 정의합니다.



모든 C ++ 표준 라이브러리 유형 및 함수는 std 네임 스페이스 또는 std 내부에 중첩 된 네임 스페이스에서 선언되므로 대부분의 프로그램에서 널리 사용됩니다.

Windows 10에 PHP 설치

네임 스페이스 정의

네임 스페이스를 정의하기 위해 다음과 같이 네임 스페이스 이름 다음에 네임 스페이스 키워드로 시작합니다.

namespace namespace_name {int a, b // // a와 b가 // namespace_name의 범위에 선언 된 코드 선언}

네임 스페이스를 정의 할 때 기억해야 할 사항

  • 네임 스페이스 선언은 전역 범위에서만 나타납니다.
  • 네임 스페이스 선언에는 액세스 지정자가 없습니다.
  • 네임 스페이스 선언은 다른 네임 스페이스 내에 중첩 될 수 있습니다.
  • 네임 스페이스 정의의 닫는 중괄호 뒤에 세미콜론을 제공 할 필요가 없습니다.
  • 네임 스페이스 정의는 여러 단위로 분할 될 수 있습니다.
#include using namespace std namespace first_function {void func () {cout<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

산출:



func () 함수를 두 번 정의하는 위의 예에서는 네임 스페이스 개념을 사용합니다. first_function 네임 스페이스 아래에 첫 번째 함수를 정의하고second_function 네임 스페이스 아래의 두 번째 함수. 이러한 함수를 호출하기 위해 우리는 first_function :: func () 및 second_function :: func () 방식으로 범위 확인 연산자를 사용합니다.

C ++에서 네임 스페이스 사용

프로그램에서 네임 스페이스를 사용하는 세 가지 방법이 있습니다.

  1. using 지시문
  2. 사용 선언
  3. 범위 확인 연산자 (: :)

using 지시문

네임 스페이스 앞에 사용 네임 스페이스 지시문. 사용 키워드를 사용하면 전역 범위를 사용하여 전체 네임 스페이스를 프로그램으로 가져올 수 있습니다. 우리의 요구 사항에 따라 다른 네임 스페이스 또는 프로그램으로 네임 스페이스를 가져 오는 데 사용할 수 있습니다.

헤더 파일 Namespace_first.h를 고려하십시오.

네임 스페이스 First {int a class First_class {int i}}

Namespace_second.h 파일에 위의 네임 스페이스 헤더 파일 포함 : 'Namespace_first.h'포함

네임 스페이스 두 번째 {네임 스페이스 첫 번째 사용 First_class obj int y}

namespace_First를 namespace_Second로 가져 오므로 이제 First_class 클래스를 namespace_Second에서 사용할 수 있습니다. 따라서 다음 프로그램을 별도의 파일에 작성할 수 있습니다. new_file.cpp라고합시다.

#include 'Namespace_second.h'void test () {using namespace Second // First_class First_class obj2 클래스의 객체 생성}

그 후 , using 지시문을 사용하면 원하는 곳에서 C ++에서 네임 스페이스를 훨씬 쉽게 사용할 수 있습니다.

자바에서 능력을 사용하는 방법

사용 선언

using-declaration에서는 현재 범위 내에서만 사용할 수있는 특정 이름을 한 번에 하나씩 가져오고 범위 확인을 통해 호출됩니다. 참고 : using-declaration으로 가져온 이름은 using 지시문으로 가져온 이름을 재정의 할 수 있습니다. 아래 예에서이를 확인할 수 있습니다.

헤더 파일 New_File.h를 살펴 보겠습니다.

네임 스페이스 First {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

이제 아래 코드를 사용하여 New_file_2.cpp라는 이름의 새 프로그램 파일을 만들어 보겠습니다.

#include 'New_file.h'void B () {using namespace First // using 지시문 using Second :: A // 선언 사용 First :: A () // class A () of First namespace A () // A 호출 () / 두 번째 네임 스페이스}

범위 해결 연산자 (: :)

네임 스페이스의 이름과 범위 확인을 사용하여 네임 스페이스에 선언 된 모든 이름을 명시 적으로 지정할 수 있습니다. :: ' 식별자가있는 연산자.

namespace New_space {class X {static int i public : void func ()} // 클래스 이름 선언 class Y} // 정적 클래스 변수 초기화 int New_space :: X :: i = 23 class New_space :: Y {int a public : int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

프로젝트 관리에서 조달이란 무엇입니까?

C ++의 불연속 네임 스페이스

우리가 알고 있듯이 C ++의 네임 스페이스는 여러 부분으로 정의 될 수 있으므로 별도로 정의 된 부분의 합계로 구성됩니다. 따라서 네임 스페이스의 한 부분에 다른 파일에 정의 된 이름이 필요한 경우 해당 이름은 여전히 ​​해당 범위에서 선언되어야합니다. 다음과 같은 방식으로 다음 네임 스페이스를 작성하면 새 네임 스페이스를 정의하거나 기존 네임 스페이스에 새 요소를 추가합니다.

namespace namespace_name {// 코드 본문}

C ++의 중첩 된 네임 스페이스

네임 스페이스는 쉽게 중첩 될 수 있으며 다음과 같이 다른 네임 스페이스 내에 하나의 네임 스페이스를 정의 할 수 있습니다.

namespace namespace_name1 {// namespace_name1의 코드 본문 namespace namespace_name2 {// 코드 본문 중첩 namamespace_name2}}

이것으로 C ++의 네임 스페이스 기사를 마칩니다. C ++에서 네임 스페이스가 정확히 무엇인지, 그리고이를 정의하는 다른 방법이 무엇인지 이해 하셨기를 바랍니다. 자세한 내용은 다음을 확인하십시오. 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 제공합니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.