2012-08-15 5 views
6

가능한 중복 : 나는 std::cout 다른 장소에서 사람들이 상단에 using namespace std;을하는 반면, 말하자면, 사람들이 사용하는 몇 가지 코드 예제를 본 적이
Why is 'using namespace std;' considered a bad practice in C++?스타일과 네임 스페이스

단순함 대신. 어느 것이 일반적으로 선호됩니까?

+2

또 다른 대안은'std :: cout'을 사용하는 것입니다. – hmjd

+6

[왜'namespace std;를 사용하는 것은 나쁜 습관이라고 생각합니까?] (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-a-bad-practice-in-c)) – chris

+3

간단한 규칙을 원한다면 :'using' 지시어를 사용하지 마십시오 (즉,'using namespace abc;'); unhiding과 ADL 제어를 위해서만'using' 선언 (예 :'Using Base :: foo')을 사용하십시오. 소스 코드를 깔끔하게 유지하려면 네임 스페이스 별칭을 사용하십시오. –

답변

3

사용 std::cout을 이름 충돌. using namespace std;을 사용하면 전역 이름 공간에 사용자 또는 팀의 다른 누군가가 작성한 클래스 또는 함수 이름과 충돌 할 수있는 모든 표준 이름을 채 웁니다. 당신이 이미 알고있을 수 있습니다 -이 잘 C++ faq lite에 당신이 결코using namespace 헤더의를해야 SO

2

코드를 작성할 때 개인적으로 전체 네임 스페이스 단위를 사용합니다. std::string 등. 개발자가 사용하고자하는 기능을 읽는 사람이라면 누구나 명확하게 알 수 있습니다.

나는 다음과 같은 말을 본 적이 : 어떤 가능성을 피하기 위해 한번, 그것을 천 번을 읽어

쓰기 ...

:

0

먼저 노트에 설명되어 있습니다. 그 이유는 해당 파일을 포함하는 모든 소스 파일에 using을 가져 오기 때문입니다.

심지어 소스 파일 수준에서도 명시 적으로 표준 라이브러리 함수와 클래스를 정규화하는 것을 선호합니다. std::cout. 그러나 어떤 경우에는 편의를 위해 대신 특정 사용을 사용합니다 (예 : using std:endl). 그러나 나는 일반적으로 명백한 자격을 선호한다.

관련 문제