Language/C++

C++ 네임스페이스

JunOnJuly 2024. 2. 2. 17:25
728x90
#include <iostream>

// 네임스페이스 선언
namespace sample_namespace_1
{
	// 네임 스페이스 내부에 함수 선언
	void sample_1(void)
	{
		std::cout << "sample_namespace_1 의 sample_1" << std::endl;
	}
}

namespace sample_namespace_2
{
	// 이름 공간의 중첩
	namespace inner_sample_namespace_2
	{
		void inner_sample_1(void)
		{
			std::cout << "sample_namespace_2 의 inner_sample_namespace_2 의 inner_sample_1" << std::endl;
		}
	}
	void sample_1(void)
	{
		std::cout << "sample_namespace_2 의 sample_1" << std::endl;
	}
}

namespace sample_namespace_3
{
	// 함수의 선언만
	void sample_1(void);
}
namespace sample_namespace_4
{
	void sample_1(void);
}

int main(void)
{
	// :: -> 범위지정 연산자, 네임스페이스를 지정할 때 사용하는 연산자
	sample_namespace_1::sample_1();
	sample_namespace_2::sample_1();
	// 네임 스페이스 내부의 네임스페이스 내부의 함수
	sample_namespace_2::inner_sample_namespace_2::inner_sample_1;
	sample_namespace_3::sample_1();
	sample_namespace_4::sample_1();
	
	// using 을 사용하면 :: 없이 네임스페이스 내부의 함수 사용 가능
	using sample_namespace_1::sample_1;
	sample_1();
	// using namespace 를 사용하면 :: 없이 네임스페이스 사용 가능
	using namespace sample_namespace_2;
	inner_sample_namespace_2::inner_sample_1();
	// 네임 스페이스에 별칭 지정 가능
	namespace inner_2 = sample_namespace_2::inner_sample_namespace_2;
	inner_2::inner_sample_1();

	return 0;
}

void sample_namespace_3::sample_1(void)
{
	// 함수의 정의
	std::cout << "sample_namespace_3 의 sample_1" << std::endl;
}

void sample_namespace_4::sample_1(void)
{
	std::cout << "sample_namespace_4 의 sample_1" << std::endl;
}
728x90