В дополнение к функциям, классам и перечислениям C++ предоставляет пространства имён (namespaces) как механизм управления и контроля за повторяющимися именами функций и классов. Например, если назвать некоторые ваши функции именами, которые пересекаются с именами функций в стандартной библиотеки, то Вы получите конфликт имён, то есть переопределение функции из стандартной библиотеки, что может привести к неопределённости и ошибкам в программе. Благодаря пространству имён можно избежать этой проблемы, просто поместив функции в namespace .
- namespace My_code
- {
- class complex { /* ... */ };
- complex sqrt(complex);
- // ...
- int main();
- }
- int My_code::main()
- {
- complex z {1,2};
- auto z2 = sqrt(z);
- std::cout << '{' << z2.real() << ',' << z2.imag() << "}\n";
- // ...
- };
- int main()
- {
- return My_code::main();
- }
В данном случае пространство My_code позволяет написать отдельную реализацию функции main() , которая будет вызываться в реальной функции main() , для этого потребуется вызвать функцию main() через пространство имён My_code .
- My_code::main();
Аналогичным способом вызываются и функции из стандартной библиотеки, например:
- std::max(3, 5);
Для того, чтобы облегчить себе жизнь и не писать каждый раз std , можно использовать директиву using .
- using namespace std;