2017-05-17 1 views
0

using namespace std;에 문제가 있음을 이해합니다 (예 : "Why is using namespace std considered bad practice?"에 대한 답변 읽기)."using namespace std;"의 좋은 대안은 무엇입니까?

표준 네임 스페이스를 가져 오는 대신 좋은 대안은 무엇입니까?

코드 개선을 위해 무엇을 할 수 있는지 알고 싶습니다.

+0

스택 오버 플로우에 오신 것을 환영합니다! 나는 기존의 좋은 답을 찾을 수 없었던 부분에 집중하기 위해 질문에 [편집]했습니다. 그것은 상당히 과감한 편집이지만 재사용이 가능하고 유용 할 수있는 질문이 될 것이라고 생각합니다. –

답변

1

대안은 std::을 어디서나 작성하는 것입니다. 이름 충돌 때문에 그리고 그것이 불분명하기 때문에 눈살을 찌푸리게됩니다. 그냥 vector이라고 쓰면 나는 수학적인 3D 벡터 또는 표준 라이브러리 벡터 또는 다른 것을 사용하고 있는지 즉시 알 수 없습니다. std::vector이라고 쓰면 분명합니다. using namespace std 인 경우 vectorvector이라는 내 자신의 3D 수학 클래스와 충돌 할 수 있습니다. 전역 범위에서 using namespace std;와 함께 세계 하나에 std 네임 스페이스에서 모든 영입에

+0

거의 유일한 대안은 .. –

2

주요 대안은 다음과 같습니다

  1. 만 당신이 필요로하는 실제 이름에서 가져. 예를 들어 vectorusing std::vector;

  2. 과 같이 가져 오면 이름을 사용할 때 항상 명시 적 네임 스페이스 제한을 사용하십시오. 예를 std::vector<int> v;를 들어

  3. 모든 이름에서 가져하지만, 감소 된 범위 (단지 함수 내에서처럼) (헤더, 이것은 거의 항상 당신이 할 수있는 유일한 일이 있어야한다). 예를 들어 void f() { using namespace std; vector<int> v; } - 전역 이름 공간을 오염시키지 않습니다.

관련 문제