На всех наших курсах по C ++ все учителя всегда ставят using namespace std;
сразу после #include
s в своих .h
файлах. Мне это кажется опасным, поскольку с тех пор, включив этот заголовок в другую программу, я получу пространство имен, импортированное в мою программу, возможно, не осознавая, не намереваясь или не желая этого (включение заголовка может быть очень глубоко вложенным).
Итак, мой вопрос двоякий: я прав, что using namespace
не следует использовать в файлах заголовков, и / или есть какой-то способ отменить это, например:
//header.h
using namespace std {
.
.
.
}
Еще один вопрос в том же духе: должен ли файл заголовка #include
все заголовки, которые .cpp
нужны соответствующему файлу, только те, которые необходимы для определений заголовков, и позволить .cpp
файлу #include
остальное или ничего и объявить все, что ему нужно, как extern
?
Причина вопроса такая же, как и выше: я не хочу сюрпризов при включении .h
файлов.
Кроме того, если я прав, это распространенная ошибка? Я имею в виду программирование в реальном мире и «настоящие» проекты.
Спасибо.
using namespace
операторов, вы можете использовать полное имя для решения проблемы.