본문 바로가기

Language/C++

[C++] Namespace - 컴도리돌이

728x90

 


Namespace

 

변수 또는 함수의 이름이 같을 때 생기는 충돌을 예방하기 위한 방법이다. (큰 프로젝트에서)

 

<기본형>

namespace ns {
	code
}

 

<example>

#include <iostream>


namespace first_space{
	void func()
    {
    	std::cout << "hi";
    }
}

namespace second_space{
	void func()
    {
    	std::cout << "hi";
    }
}

int main()
{
	first_space :: func();
    	second_space :: func();
	return 0;
    
}

 

first_space와 second space가 같은 이름을 가진 func 함수를 가지고 있다. main 함수에서 각각의 func 함수를 불어올 때는 namespace :: 함수 이름을 사용하면 된다.


using namespace ns;

 

#include <iostream>
using namespace std;

namespace first_space{
	void func()
    {
    	cout << "hi";  //using namespace std를 사용함으로써 std :: 는 선언하지 않아도 된다.
    }
}

namespace second_space{
	void func()
    {
    	cout << "hi";
    }
}

int main()
{
	using namespace first_space;
    	func();
	return 0;
    
}

 

전체 코드에서 namespace를 std를 사용하였기 때문에 std :: 선언이 필요한 입출력에서 따로 선언하지 않아도 된다. main 함수에서 first_space를 using namespace 하였기 때문에 func() 함수는 first_space에 있는 func()이 호출된다.