왜 using namespace std;를 쓰지 말라는거에요?


using namespace std;는 왜 쓰지 말라는건가요? std::out, std::cin처럼 std::붙여서 쓰라는데 이유를 모르겠어요. 비효율적인가요? 아니면 변수들이 모호해질 위험이 있어서 그러는건가요? 어플리케이션이 커지면 프로그램 성능에 영향을 미치는 건가요?

  • 2016년 01월 05일에 작성됨

조회수 356


1 답변


좋아요
0
싫어요
채택취소하기

퍼포먼스랑은 별로 상관없고 충돌과 관련있습니다. 다음을 생각해보세요:

두 개의 라이브러리 A와 B가 있습니다. A에는 func1()만, B에는 func2()만 있다고 합시다. 겹치는 함수가 없으니 이 경우에는 using namespace foo; using namespace bar; 를 써도 괜찮습니다. 잘 동작 하겠지요.

하지만 어느날 foo가 업그레이드 되서 func2()이 추가되었다고 하면 using namespace foo; using namespace bar; 에서 func2()에 의해 충돌이 일어나게 됩니다. 따라서 foo::func2() bar::func2() 와 같이 namespace를 지정해주면 충돌이 생길 일이 없기 때문에 using namespace ... 을 권장하지 않는 겁니다.

  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close