왜 using namespace std;를 쓰지 말라는거에요?
조회수 24516회
using namespace std;
는 왜 쓰지 말라는건가요?
std::out
, std::cin
처럼 std::
붙여서 쓰라는데 이유를 모르겠어요.
비효율적인가요? 아니면 변수들이 모호해질 위험이 있어서 그러는건가요?
어플리케이션이 커지면 프로그램 성능에 영향을 미치는 건가요?
1 답변
-
퍼포먼스랑은 별로 상관없고 충돌과 관련있습니다. 다음을 생각해보세요:
두 개의 라이브러리 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 ... 을 권장하지 않는 겁니다.
댓글 입력