На всіх наших курсах c ++ всі викладачі завжди кладуть using namespace std;відразу після #includes у свої .hфайли. Мені це здається небезпечним з того часу, включивши цей заголовок в іншу програму, я отримаю імпортоване ім’я до моєї програми, можливо, не усвідомлюючи, не маючи намір чи бажаючи цього (включення заголовка може бути дуже глибоко вкладеним).
Отже, моє запитання подвійне: чи я правий, що using namespaceйого не слід використовувати у файлах заголовків, та / чи є якийсь спосіб його скасувати, щось на кшталт:
//header.h
using namespace std {
.
.
.
}
Ще одне запитання в цих же рядках: Чи повинен заголовок містити #includeвсі заголовки, яким .cppпотрібен відповідний файл, лише ті, які потрібні для визначення заголовка, і дозволити .cppфайлу #includeрешту, або жоден і оголосити все, що йому потрібно extern?
Міркування, що стоїть за запитом, те саме, що вище: Я не хочу сюрпризів, коли включати .hфайли.
Також, якщо я маю рацію, чи це звичайна помилка? Я маю на увазі в реальному програмуванні та в «реальних» проектах там.
Дякую.
using namespaceзаяви, ви можете використати повноцінне ім’я для вирішення проблеми.