namespaces c
간단한 예제와 함께 C ++의 네임 스페이스에 대한 전체 개요.
Windows 10 용 최고의 가상 머신 소프트웨어
지금까지 이전 튜토리얼에서 변수, 선언, 함수 및 C ++에서 사용되는 기타 엔티티에 대한 모든 것을 보았습니다.
C ++로 응용 프로그램을 개발하는 동안 동일한 변수 이름이 두 번 사용되거나 동일한 프로토 타입으로 정의 된 함수 등과 같은 특수한 상황이 발생할 수 있습니다. 이러한 시나리오가 발생하면 컴파일러가 모호성을 유발하는 올바른 변수 또는 함수 호출을 추론하기가 어려워집니다. .
=> 여기에서 완벽한 C ++ 교육 가이드를 확인하십시오.
학습 내용 :
네임 스페이스 란?
아래 예를 보겠습니다.
#include #include int main() { int var; double var; std::cin>>var; }
산출:
'int main ()'함수에서 :
8:10 : 오류 : 'double var'선언 충돌
7 : 7 : 참고 : 'int var'로 이전 선언
위의 예에서는 유형이 다르지만 식별자는 동일한 두 개의 변수를 정의했습니다. 따라서이 예제를 컴파일 할 때 출력 창에 표시된대로 오류가 발생합니다. 이러한 충돌 선언은 두 변수의 이름을 지정하는 데 동일한 식별자가 사용되기 때문에 발생합니다.
이러한 유형의 상황은 응용 프로그램에서 모호성을 유발합니다.
C ++는“ 네임 스페이스 ”를 클릭하여이 문제를 해결하십시오. C ++의 네임 스페이스는 동일한 식별자를 가진 변수 또는 함수를 구분하는 데 사용되는 패키지, 영역 또는 라이브러리와 같습니다.
네임 스페이스에는 변수, 함수, 클래스 또는 기타 개체와 심지어 다른 네임 스페이스가 포함될 수 있습니다. 네임 스페이스의 각 멤버는 네임 스페이스 공간을 사용하여 참조 할 수 있습니다. 이렇게하면 컴파일러가 이름이 같더라도 다양한 프로그래밍 엔터티를 구별 할 수 있습니다.
네임 스페이스 정의
C ++에서는 ''키워드를 사용하여 네임 스페이스를 정의 할 수 있습니다. 네임 스페이스 ' 아래 그림과 같이:
namespace namespace_name{ namespace_declarations; }
따라서 'test_space'라는 네임 스페이스를 정의해야하는 경우 다음과 같이 할 수 있습니다.
namespace test_space{ int var=10; }
위의 선언은 'test_space'라는 이름 공간을 정의합니다. 표시된 것처럼 멤버로 정수 변수 var가 있습니다.
네임 스페이스 멤버 액세스
이제 우리는 자신의 네임 스페이스 'test_space'를 정의했으며이 네임 스페이스의 내용에 어떻게 액세스합니까?
C ++ 프로그램에서 다음 구문을 사용하여 네임 스페이스의 멤버에 액세스 할 수 있습니다.
namespace_name::namespace_member;
따라서 위의 'test_space'네임 스페이스에 선언 된 정수 변수 var는 다음과 같이 액세스 할 수 있습니다.
test_space::var;
아래의 전체 예제를 참조하여 네임 스페이스와 그 사용법을 보여줍니다.
#include #include namespace test_space{ int var = 10; } int main() { double var = 20.53; std::cout<<'local var = '< 산출:
로컬 변수 = 20.53
test_space :: var = 10
위의 프로그래밍 예제에서 네임 스페이스 생성 및 액세스에 대한 모든 것을 시연했습니다. 보시다시피 'test_space'는 우리가 정의한 네임 스페이스입니다. 하나의 정수 변수 var가 정의되어 있습니다. 그런 다음 주 함수에서 초기화되는 또 다른 이중 변수 var가 있습니다.
나중에이 두 변수를 모두 표시합니다. 메인 내부의 지역 double 변수는 직접 인쇄 할 수 있지만 네임 스페이스 변수를 인쇄하려면 네임 스페이스 이름을 앞에 붙여야합니다.
이것은 또한 앞에서 논의한 동일한 이름 때문에 변수 간의 충돌 문제를 해결했습니다.
Using 지시어
이전 주제에서 namespace_name :: namespace_member를 사용하여 네임 스페이스 멤버에 액세스 할 수 있음을 확인했습니다.
프로그램의 모든 위치에 네임 스페이스 이름을 지정하지 않으려면 ' 사용 ”지시문은 프로그램에 네임 스페이스를 포함합니다.
이것은 다음과 같이 수행됩니다.
#include #include namespace test_space{ int var = 10; } using namespace std; using namespace test_space; int main() { double var = 20.53; cout<<'local var = '< 산출:
로컬 변수 = 20.53
test_space :: var = 10
위의 예에서는 네임 스페이스“test_space”를 정의한 후 두 개의 문을 사용했습니다.
이것들은:
작동하는 가짜 이메일 및 비밀번호
using namespace std; using namespace test_space;
첫 번째 문은 선언을 사용하여 C ++ 라이브러리의 미리 정의 된 표준 네임 스페이스 인 네임 스페이스 'std'에 액세스합니다. 이 네임 스페이스는 cin, cout 등과 같은 다양한 함수에 액세스하는 데 사용됩니다.
두 번째 문은 프로그램에 'test_space'네임 스페이스를 포함하는 데 사용됩니다.
주 함수에서 cout 및 변수 var와 같은 함수 앞에 네임 스페이스 이름이 올 필요가 없음을 알 수 있습니다. 직접 참조 할 수 있습니다. 그러나 var는 main 함수의 지역 변수와 이름 충돌이 있기 때문에 네임 스페이스도 항상 전역 범위를 갖기 때문에 범위 확인 연산자 (: :)를 사용하여 참조합니다.
중첩 된 네임 스페이스
C ++는 또한 중첩 된 네임 스페이스, 즉 다른 네임 스페이스 내에 정의 된 네임 스페이스를 가질 수 있습니다.
중첩 된 네임 스페이스의 일반 구문은 다음과 같습니다.
namespace ns1{ ns1_code; namespace ns2{ ns2_code; } }
ns2_code에 액세스해야하는 경우 다음과 같이 액세스 할 수 있습니다.
ns1::ns2::ns2_code;
다음 코드 예제를 사용하여 중첩 된 네임 스페이스를 시연 해 보겠습니다.
#include #include namespace first{ int var = 10; namespace second{ int secVar = 20; } } using namespace std; using namespace first; using namespace first::second; int main() { double var = 20.53; cout<<'local var = '< 산출:
로컬 변수 = 20.53
first :: var = 10
초 :: var = 20
위 프로그램에서 중첩 된 네임 스페이스를 사용했습니다. using 지시문을 사용하여 네임 스페이스에 액세스하는 방법에 유의하십시오. 가장 안쪽의 네임 스페이스를 한 번만 참조하는 것으로는 충분하지 않습니다. 가장 바깥 쪽 네임 스페이스의 코드가 필요하면 별도로 참조해야합니다.
'별칭'이라는 이름 공간에 다른 이름을 사용할 수 있습니다. 이는 중첩 된 네임 스페이스를 사용할 때 특히 유용하며 중첩 정도가 높습니다.
위의 예제를 수정하여 네임 스페이스의 별칭을 보여줄 수 있습니다.
#include #include namespace first{ int var = 10; namespace second{ int secVar = 20; } } using namespace std; using namespace first; namespace nested = first::second; int main() { double var = 20.53; cout<<'local var = '< 산출:
로컬 변수 = 20.53
first :: var = 10
초 :: var = 20
first :: second 네임 스페이스에 대해 정의 된 중첩 된 별칭에 유의하십시오. 별칭이 정의되면 별칭 이름을 사용하여 네임 스페이스를 참조 할 수 있습니다.
외부 네임 스페이스
때로는 애플리케이션에서 사용할 네임 스페이스가 너무 많으면 모든 네임 스페이스를 별도의 파일에 배치 할 수 있습니다. 이것은 쉽게 할 수 있습니다. 네임 스페이스가 별도의 파일에 있으면 해당 파일을 프로그램에 포함시킨 다음 프로그램에서 네임 스페이스와 그 내용을 직접 사용합니다.
예를 들어, 다음 네임 스페이스를 포함하는 ns.h라는 파일이있는 경우.
//ns.h namespace first{ int var = 25; }
이제 프로그램에서 다음과 같이 네임 스페이스 'first'를 사용할 수 있습니다.
#include #include “ns.h” using namespace std; int main() { cout<따라서 프로그램에 네임 스페이스를 포함하는 파일을 포함하면 동일한 프로그램에서 전역 적으로 선언 된 것처럼 네임 스페이스를 사용할 수 있습니다.
연속 네임 스페이스
C ++에서는 또한 연속 네임 스페이스라고하는 것을 정의 할 수 있습니다. 연속 네임 스페이스는 동일한 이름을 사용하여 두 번 이상 정의 된 네임 스페이스입니다. 실제로 이들은 별도의 네임 스페이스가 아니라 동일한 네임 스페이스의 확장입니다.
연속 네임 스페이스는 아래 예제에서 분명합니다.
#include #include . namespace first{ int var = 10; } namespace first{ namespace second{ int secVar = 20; } } using namespace std; using namespace first; namespace nested = first::second; int main() { double var = 20.53; cout<<'local var = '< 산출:
로컬 변수 = 20.53
first :: var = 10
초 :: var = 20
위의 예에서 동일한 네임 스페이스를 두 번 정의했습니다. 첫 번째 정의에는 var라는 변수가 있습니다. 두 번째 선언에는 또 다른 네임 스페이스가 정의되어 있습니다.
main 함수에서 외부 및 내부 네임 스페이스의 멤버에 액세스했으며 멤버에 쉽게 액세스 할 수 있습니다.
Wi-Fi 기본 게이트웨이를 사용할 수 없습니다.
이것은 때때로 '불연속 네임 스페이스'라고도하는 연속 네임 스페이스의 예입니다. 그들의 정의는 별개로 보이지만 실제로는 연속적인 네임 스페이스입니다.
결론
이것으로, 우리는 C ++의 네임 스페이스에 대한이 튜토리얼을 끝냈습니다. 다른 공간이나 지역에서 코드를 분리 할 수있는 한 가지 방식으로 네임 스페이스를 사용하여 코드를 읽고 해당 멤버를 명확하게 사용할 수 있습니다.
다음 튜토리얼에서는 예외 처리, 파일 입력 / 출력 등과 같은 C ++의 다양한 기본 주제에 대해 자세히 알아 봅니다.
=> 여기에서 C ++ 교육 자습서의 A-Z를 보려면 여기를 확인하십시오.
추천 도서