Ответ 1
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,
, даже когда вы думаете, reiedied with it.