Coding/궁금한 것들

using namespace std를 쓰면 안되는 이유?

labote 2019. 10. 15. 19:47

 평소에 쓰던 using namespace std; 가 어떤 의미를 가지고 있는지 알아보기 위해 찾아보던 도중 이런 제목의 글이 있었다.

using namespace std를 쓰면 안되는 이유. 왜 안되지? 평소에 알고리즘 문제를 풀다보면 그냥 자연스레 적고 본다. 찾아본 결과 그 이유는 우리가 사용하는 cin, cout 등 여러 함수들이 std 안에 포함된 함수이기 때문이다. 하지만 사용할때마다 std::를 붙여 사용하기에는 귀찮기 때문에 우리는 using namespace std를 써서 std라는 이름을 안붙이고 함수들을 호출한다. 

 

 이제 쓰면 안되는 이유에 대해서 보자. 만약 두 개의 라이브러리를 사용한다고 하자. std1, std2

 

using namespace std1;

using namespace std2;

 

 그러면 우리는 위처럼 작성을 할 것이다. 이때 만약 std1과 std2 안에 dfs()라는 함수가 들어있다고 가정을 하면 dfs()함수를 불러올때 충돌이 일어나게 된다(namespace에서 import). 그러면 수정을 해야하게 된다. 이러한 문제점 때문에 사용하면 안된다고 하는것 같다.

 

 다음으로 std::를 사용하면 좋은점이다.

1. 이름 중복 제거

2. 가독성 향상