Разработка приложений на C++
  • Введение
  • Особенности разработки программ на С++
    • Указатель на функцию
    • Преобразование типов
    • Наследование
    • Виртуальные функции
    • Перегрузка операций
    • Функциональные объекты
    • Шаблоны
    • Пространства имён
    • Обработка исключительных ситуаций
    • Немного о компиляции и сборке
    • Рекоммендации по написанию кода
    • Новые возможности стандарта С++11
    • Терминология
  • Понятие структур данных
    • Массивы
    • Динамические структуры
  • Метапрограммирование
    • Шаблоны функций
    • Шаблоны классов
    • Специализация шаблонов
      • Пример: вычисление факториала
      • Пример: числа Фиббоначчи
    • Конфигурации шаблонных классов
  • Стандартная библиотека С++
    • Обзор стандартной библиотеки С++
    • Структура стандартной библиотеки С++
      • Концепции
    • Ввод-вывод данных
    • Примитивы, определённые в библиотеке STL
    • Итераторы
    • Контейнеры
      • Inplus: Как это работает
    • Алгоритмы
      • inplus: Как это работает
    • Примеры использования стандартной библиотеки С++
    • Стандартная библиотека С++/Вопросы
    • Стандартная библиотека С++/Примеры лабораторных работ
  • Разработка и использование библиотек программирования
    • Создание библиотек программирования
    • Использование динамических библиотек
    • Вопросы
    • Примеры лабораторных работ
  • Ответы на вопросы
Powered by GitBook
On this page
  1. Особенности разработки программ на С++

Пространства имён

PreviousШаблоныNextОбработка исключительных ситуаций

Last updated 2 years ago

Иногда различные библиотеки, или даже код программы, содержат совпадающие имена классов, функций, переменных или констант. В этом случае при сборке программы компилятор выдаст ошибку (например, двойное определение класса/функции или неправильное использование имени). Для решения проблемы конфликта имён было введен механизм пространства имён. Под пространством имён понимают именованное множество имён классов, функций, переменных, констант.

Пространство имён определяется при помощи ключевого слова namespace. Объявление пространства имён, а также элементов пространства имён, происходит следующим образом:

namespace mySpace{
	int myVar;
	void function(){
		std::cout << "function from namespace 'mySpace'" << std::endl;
	}
}

void function(){
	std::cout << "function from global namespace" << std::endl;
}

Существует глобальное пространство имён (пространство имён по умолчанию), оно включает в себя все элементы, не объявленные в конкретном пространстве имён. Доступ к элементам, объявленном в пространстве имён происходит при помощи оператора :: . Ниже показан пример использования функции из пространства имён и функции из глобального пространства.

mySpace::function();
function();

Пространство имён можно объединить с глобальным пространством имён следующим образом:

using namespace mySpace; 

В этом случае программист получает прямой доступ к классам и функциям, объявленным в пространстве имён mySpace, что ему позволяет их использовать без указания пространства имён.

Рекомендация: Старайтесь не использовать объединений с глобальным пространством имен. []

По желанию, программист может открыть прямой доступ к конкретному имени из пространства имён при помощи директивы using:

using mySpace::myVar;

Пространства имён могут включать в себя другие пространства имён. Добавлять имена в пространство имён можно в различных местах кода программы.

Стандартная библиотека С++ определена в пространстве имён std.

Google CPP Guide Style