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