Как вы узнали, что cout
существовал в первую очередь?
Поскольку вы прочитали дружественное руководство, языковой стандарт, хорошую книгу или онлайн-справочник.То же самое относится ко всему: ваша документация или ссылка сообщит вам пространство имен, в котором вы найдете ваши типы.
Как правило, все, что является частью стандартной библиотеки C ++, находится в std
пространство имен, но некоторые вещи вполне могут находиться в пространстве имен, вложенном в него.Известные примеры вложенных пространств имен: std::placeholders
и std::chrono
.Но вам будет сообщено правильное пространство имен, если вы прочитаете хорошую ссылку.
Благодаря @Potatoswatter: другие конструкции, которые используют тот же синтаксис разрешения области действия, являются статическими константами классов.Например, класс std::ios_base
содержит тип статического члена seekdir
со значениями статической константы beg
, cur
и end
;к ним можно получить доступ через std::ios_base::beg
и т. д. Или, поскольку тип std::ios
наследуется от ios_base
, через std::ios::beg
и т. д.
Во многих отношениях класс с только статическими членами является просто прославленнымпространства имен, и в первые дни C ++ люди часто использовали вложенные классы для «симуляции» вложенных пространств имен, которые не были доступны в то время.Синтаксис разрешения области одинаков.