본문 바로가기
C++

[C++] - namespace와 using 사용법 (std:: 생략하기)

by 개발 고양이 2023. 12. 12.

1. namespace란?

namespace란, 클래스, 상수, 변수, 함수, 구조체 등의 이름이 중복되어 컴파일 시 오류가 생기는 것을 방지하기 위해 도입된 개념이다. (예를 들어 하나의 프로그램을 여러 개발자가 개발하는 경우, A 개발자가 덧셈 기능을 수행하는 number()라는 이름의 함수를 구현했다고 하자. 그리고 B 개발자는 같은 이름의 number() 함수이지만, 뺄셈 기능을 수행하도록 작성하였다고 하자. A 개발자와 B 개발자가 작성한 소스를 합쳐서 컴파일하거나 두 개발자의 소스를 링크시킬 경우 number 함수가 어떤 기능을 수행하는지 알 수 없어 오류가 발생하게 된다. )

namespace abc{	//abc라는 이름공간 생성
	...		
}

namespace를 생성하는 방법은 위와 같다. 생성된 namespace 내에서 선언된 모든 요소들은 abc라는 이름공간을 가지게 된다. 

이름공간(namespace) :: 이름(identifier)

생성된 namespace 내에 있는 이름을 사용하려면 위와 같이 쓰면 된다. 

C++에서 출력을 할 때 std::cout 을 사용하는 것과 같은 방식이다.

 


2. std::란?

std는 C++의 표준 이름 공간으로, 모든 C++ 표준 라이브러리는 std 라는 이름공간에 만들어져 있다. 그러므로 cout, cin, endl 등 C++ 표준 라이브러리에서 선언된 이름을 사용할 때에는 std:: 를 앞에 써주어야 한다. 

std::cout << "Hello World!" << std::endl;

 


3. using 지시어

그러나, C++ 코딩 시 자주 사용하는 cout, cin, endl 등등을 사용할 때마다 std::를 써주는 것은 여간 번거로운 일이 아닐 수 없다. using 지시어를 사용하면, std:: 생략이 가능하다. using 사용법에 대해서 알아보자.

using namespace 이름공간;

 

using namespace (이름공간); 이라고 써주면, 이름공간 내에 선언된 모든 요소들에 대해 앞에 이름공간::을 써주지 않아도 사용이 가능하게 된다. 따라서 std::를 생략하기 위해서는, 아래와 같이 써주면 된다. 

using namespace std;

 

따라서 using namespace std; 구문을 적어주면 아래처럼 std::를 생략할 수 있다. 

#include <iostream>
using namespace std;

int main(){
	cout << "Hello World!" << endl;
}