We wszystkich naszych kursach języka c ++ wszyscy nauczyciele zawsze umieszczają w swoich plikach using namespace std;zaraz po #includeznaku s .h. Wydaje mi się to niebezpieczne, ponieważ wtedy dołączając ten nagłówek do innego programu, uzyskam przestrzeń nazw zaimportowaną do mojego programu, być może nie zdając sobie z tego sprawy, nie zamierzając jej lub nie chcąc (dołączanie nagłówka może być bardzo głęboko zagnieżdżone).
Więc moje pytanie jest podwójne: czy mam rację, że using namespacenie powinno się tego używać w plikach nagłówkowych i / lub czy jest jakiś sposób, aby to cofnąć, na przykład:
//header.h
using namespace std {
.
.
.
}
Jeszcze jedno pytanie w tych samych wierszach: czy plik nagłówkowy powinien zawierać #includewszystkie nagłówki, których .cpppotrzebuje odpowiadający mu plik, tylko te, które są potrzebne do definicji nagłówków, i pozostawić resztę .cpppliku #include, czy też nie zadeklarować wszystkiego, czego potrzebuje extern?
Uzasadnienie pytania jest takie samo jak powyżej: nie chcę niespodzianek, gdy włączam.h plików.
Poza tym, jeśli mam rację, czy jest to częsty błąd? Mam na myśli programowanie w świecie rzeczywistym i „rzeczywiste” projekty.
Dziękuję Ci.
using namespaceinstrukcji, możesz użyć w pełni kwalifikowanej nazwy, aby rozwiązać problem.