We wszystkich naszych kursach języka c ++ wszyscy nauczyciele zawsze umieszczają w swoich plikach using namespace std;
zaraz po #include
znaku 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 namespace
nie 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ć #include
wszystkie nagłówki, których .cpp
potrzebuje odpowiadający mu plik, tylko te, które są potrzebne do definicji nagłówków, i pozostawić resztę .cpp
pliku #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 namespace
instrukcji, możesz użyć w pełni kwalifikowanej nazwy, aby rozwiązać problem.