본문 바로가기
C++/C++ 기초 문법

[C++] namespace - 네임스페이스

by 후야- 2023. 12. 20.

1. namespace - 네임스페이스

네임스페이스는 코드에서 이름이 서로 충돌하는 문제를 해결하기 위해 나왔다.

#include <iostream>

namespace myCode {
	void Code()
	{
		std::cout << "Code() 가 namespace에서 호출" << std::endl;
	}
}

int main()
{
	myCode::Code();

	return 0;
}

 

-> 이런식으로 myCode 네임스페이스 아래에 두면 외부 라이브러리에 Code( ) 가 있더라도 구분할 수 있다.

-> 네임스페이스를 적용한 Code를 호출하려면 스코프 지정 연산자(::) 를 이용해야 한다.

 

#include <iostream>

namespace myCode {
	void Code()
	{
		std::cout << "Code() 가 namespace에서 호출" << std::endl;
	}
}

using namespace myCode;

int main()
{
	Code();  // = myCode::Code();
	return 0;
}

-> using 지시자를 사용하면 뒷 부분을 생략할 수도 있다.

 

◾ 그리고 cout , endl 은 std 네임스페이스에 정의된 이름이다.

include <iostream>


using namespace std;

int main()
{
	cout << "안녕하세요" << endl;      // std:: 생략가능
	return 0;
}

-> 대부분 std 네임스페이스에 대해 using 디렉티브를 적용한다. 따라서 std:: 를 붙이지 않는다.

 

❗ 헤더 파일 안에서는 절대로 using 문을 작성하면 안 된다. 그 헤더 파일을 인클루드하는 모든 파일에서 using 문으로 지정한 방식으로 호출해야 하기 때문이다.


2. nested namespace - 중첩 네임스페이스

중첩 네임스페이스는 다른 namespace 안에 있는 namespace를 말한다. 이 때 각 namespace 는 :: 으로 구분한다.

namespace MyLibraries::Networking::FTP {
	/*       */
}

 


3. namespace alias - 네임스페이스 앨리어스

네임스페이스 앨리어스는 네임스페이스의 이름을 다르게 만들거나 더 짧게 만들 수 있다.

namespace MyFtp = MyLibraries::Networking::FTP;

 

 

 

 

 

 

 

 

'C++ > C++ 기초 문법' 카테고리의 다른 글

[C++] 열거 타입  (0) 2023.12.22
[C++] 인라인(inline) 함수  (0) 2023.12.22
[C++] 매개변수의 디폴트 값  (0) 2023.12.21
[C++] 함수 오버로딩  (0) 2023.12.21
[C++] C++ 기초  (0) 2023.12.20