Вопрос о пространстве имен C ++ - PullRequest
17 голосов
/ 25 ноября 2008

Я работаю над кодом, написанным сотрудником, который больше не работает с компанией, и нашел следующий код: (который я сократил ниже)

namespace NsA { namespace NsB { namespace NsC {

    namespace { 
        class A { /*etc*/ };
        class B { /*etc*/ };
    }    

    namespace {
        class C { /*etc*/ };
    }
} } }

Я не понимаю назначения команд пространства имен в строках 3 и 8.
Может кто-нибудь объяснить, какова цель записи пространства имен без имени?
Спасибо

1 Ответ

36 голосов
/ 25 ноября 2008

Это «анонимное пространство имен», которое создает скрытое имя пространства имен, которое гарантированно будет уникальным для «единицы перевода» (то есть для файла CPP).

Это фактически означает, что все элементы внутри этого пространства имен скрыты за пределами этого модуля компиляции. Они могут быть использованы только в том же файле. См. Также эту статью о безымянных пространствах имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...