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

조회수 24663회

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

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 ... 을 권장하지 않는 겁니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)