using boost::shared_ptr;
Включает только shared_ptr
из пространства имен boost
в текущем пространстве имен.Это означает, что вы можете использовать shared_ptr
без указания его пространства имен boost
.
Он называется с использованием объявления .
using namespace boost;
Включает все символы в пространстве имен boost
в вашей текущей области видимости.Это означает, что вы можете использовать все символы в пространстве имен boost
, не квалифицируя их как пространство имен boost
.
Он называется с использованием директивы .
Почему вы всегда предпочитаете using declaration
над using directive
?
Всегда лучше использовать первое (using declaration
) и избегайте второго (using directive
), поскольку второе вызывает загрязнение пространства имен , привнося потенциально огромное количество имен в текущее пространство имен, многие из которых не нужны.Наличие ненужных имен значительно увеличивает вероятность непреднамеренных конфликтов имен.
Цитировать Herb Sutter
об использовании using directive
:
Я считаю это полезнымдумать о using directive
как о мародерствующей армии сумасшедших варваров, которая сеет неизбирательное разрушение, где бы он ни проходил - что-то, что одним лишь его присутствием может вызвать unintended conflicts,
, даже если вы думаете, что вы с ним в союзе.