Пространства имён
Варианты
Действия

Namespaces

Материал из cppreference.com
< cpp‎ | language

 
 
Язык С++
Общие темы
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 
Пространства имен предоставляют метод для предотвращения конфликтов имен в крупных проектах.
Оригинал:
Namespaces provide a method for preventing name conflicts in large projects.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Символы объявлены внутри пространства имен блок помещают в именованной области, что предотвращает их ошибочно принимают за одинаковыми именами символов в других областях.
Оригинал:
Symbols declared inside a namespace block are placed in a named scope that prevents them from being mistaken for identically-named symbols in other scopes.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Несколько объявлений пространств имен с тем же именем разрешено, в результате чего пространство имен, включая все символы из всех таких заявлений.
Оригинал:
Multiple declarations of namespaces with the same name are allowed, resulting in a namespace including all symbols from all such declarations.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Синтаксис

namespace ns_name { declarations } (1)
inline namespace ns_name { declarations } (2) (начиная с C++11)
ns_name::name (3)
using namespace ns_name; (4)
using ns_name::name; (5)

[править] Объяснение

# Декларацию пространства имен name.
Оригинал:
# Declaration of the namespace name.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
# Декларацию пространства имен name. Определения появится и name внутри и включающего имен
Оригинал:
# Declaration of the namespace name. Definitions will appear both inside name and its enclosing namespace
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
# Стандартный способ доступа к пространству имен содержания.
Оригинал:
# Standard way of accessing namespace content.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
# Чтобы все символы пространства имен, доступного в сфере использования директивы.
Оригинал:
# Making all symbols of a namespace accessible in the scope of the using directive.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
# Внесении конкретных символов имен доступных в рамках помощью директивы.
Оригинал:
# Making a specific symbols of a namespace accessible in the scope of the using directive.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Пример

Этот пример показывает, как использовать пространство имен, чтобы создать класс, который уже был назван в std имен .
Оригинал:
This example shows how to use a namespace to create a class that already has been named in the std namespace.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

#include <vector>
 
namespace vec {
 
    template< typename T >
    class vector {
        // ...
    };
 
} // of vec
 
int main()
{
    std::vector<int> v1; // Standard vector.
    vec::vector<int> v2; // User defined vector.
 
    v1 = v2; // Error: v1 and v2 are different object's type.
 
    {
        using namespace std;
        vector<int> v3; // Same as std::vector
        v1 = v3; // OK
    }
 
    {
        using vec::vector;
        vector<int> v4; // Same as vec::vector
        v2 = v4; // OK
    }
 
    return 0;
}


[править] См. также

псевдоним пространства имен
создает псевдоним существующих имен
Оригинал:
creates an alias of an existing namespace
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
[edit]