2016-01-03 2 views
0

Как мы уже знаем, :: является глобальным пространством имен. И мы уже знаем, что that с использованием пространства имен имеет некоторые недостатки.В чем разница между использованием std :: cout и использованием :: std :: cout?

Итак, мы решили напечатать меньше и напечатать в начале нашего файла using ::std::cout;, но мы также можем ввести using std::cout;. Так есть какая-то разница?

+3

Не в глобальном масштабе. –

+1

'namespace dont {namespace trythis {namespace athome {namespace std {int cout; } используя std :: cout; }}} ' –

+1

Если вы не используете внутренние пространства имен, называемые' std', то это всего лишь вопрос стиля, но я знаю только одного человека, который на самом деле написал ':: std :: cout'. Я бы сказал, что это очень редко. –

ответ

3

Некоторые люди пишут ::std::cout для того, чтобы быть абсолютно уверен, что они получают cout из стандартной библиотеки, так как ведущие :: корней типа в глобальном пространстве имен.

В противном случае возможно, что поиск может найти имя ::haha::trolling::std::cout. Однако я бы сказал, что это маловероятно.

Я иногда пишу ::std в шаблонах коротких функций, которые предназначены для многоразового использования, только для максимальной переносимости, но это довольно редко. Я видел одного спонсора, который придерживался его религиозно, но об этом.

+0

Я смутно помню, что Stefan Ram в comp.lang.C++ использовал этот стиль. –

+0

@ChristianHackl: Я не помню, кто это был здесь :( –

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