2010-01-06 5 views

ответ

2

using namespace x; - очень плохая идея, так как у вас есть Не знаю какие имена вы импортируете, даже со стандартной библиотекой.

Однако: using std::cout; и подобные заявления являются очень хорошая идея, потому что они импортируют символы в явном виде, и сделать код более удобным для чтения (хотя она по-прежнему не может быть хорошей идеей, чтобы положить их в глобальном масштабе в заголовочных файлах) ,

+1

, который заботится о том, какие имена вы импортируете, ошибки компилятора, если есть неопределенность ... – Inverse

+3

@ Inverse, вы не только видимы имена, но и имена видны как часть более широкой области применения, включающей как директиву using, так и пространство имен что он указывает. Имена явно не импортируются в область действия директивы. Так возможны двусмысленности с гораздо большим количеством имен. –

3

Потому что он может сломать рабочий код при попытке добавить свой заголовок, если пространство имен заголовков переполняет другое пространство имен, определенное в прошлом рабочем коде.

4

Если говорить о «с использованием» директивы, причина не использования, потому что если вы говорите,

using namespace std;

в заголовочном файле, все файлы, которые #include этот заголовок будет вынужден использовать это пространство имен, и это может вызвать проблемы.

+1

Нет, они не будут вынуждены использовать это пространство имен. – 2010-01-06 20:06:32

+0

«Это не аргумент, это просто противоречие!» – struppi

+0

@struppi mynamespace :: foo = 1 – 2010-01-06 20:26:43

0

Это похоже на no, чтобы объявлять статические переменные в файлах заголовков. Добавление использования инструкции в файлы заголовков приведет пространство имен в .cpp-файлы, содержащие заголовочный файл. Это не обязательно. В худшем случае вам может потребоваться изменить некоторые имена переменных или функций в .cpp, чтобы избежать конфликтов имен.

Смежные вопросы