Пространство имен – это именованный блок {} предназначенный для сокрытия имен переменных и функций. Пространства имен обычно используются при разработке больших программных проектов во избежание конфликтов имен.
Объявление пространства имен:
1 2 3 |
namespace имя { имена переменных и функций } |
Обращение к переменной или функции из пространства имен:
1 |
имя_пространства::имя_переменной |
:: – оператор разрешения видимости.
Пример.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
namespace Ivanov{ int k; float g; void ftime(); } namespace Petrov{ int p; int g; void ftime(); } Ivanov::k = 0; Ivanov::g = 2.5; Petrov::g = -7.8; |
using – оператор предназначенный для открытия имен переменных и функций из заданного пространства имен. Этот оператор позволяет не использовать оператор разрешения видимости.
Две формы оператора using:
- using namespace имя; — открываются все имена из указанного пространства имен.
- using имя_пространства::имя_переменной; — в этом случае открывается переменная или несколько переменных перечисленных в операторе using.
std – стандартное пространство имен (в нем расположена вся стандартная библиотека языка C++).
cout – поток вывода связанный с экраном.
cin – поток ввода связанный с клавиатурой.
c – консоль.
Три способа доступа к стандартным именам:
- using namespace std;
cout<<a; - using std::cin;
using std::cout;
cout<<k; - std::cerr<<k;
std::cout<<k;
Пример.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
namespace Ivanov{ int k; float g; void ftime(); } namespace Petrov{ int p; int g; void ftime(); } #include <iostream> #include <string> using namespace std; int main() { Ivanov::k = 0; Ivanov::g = 2.5; Petrov::g = -7.8; cout<<Petrov::g<<'\n'; cout<<Ivanov::g<<'\n'; cout<<Ivanov::k<<'\n'; } |
Конфликт имен – это ошибка этапа компиляции, возникающая при определении одинаковых имен переменных в разных смыслах
Пример.
1 2 3 |
int a = 5; … float a = 5;//ошибка |