Evgenii Legotckoi
15 жовтня 2017 р. 02:41

C++ - Підручник 010. Простір імен

На додаток до функцій, класів і перерахувань C++ надає простору імен (namespaces) як механізм управління та контролю за іменами функцій і класів, що повторюються. Наприклад, якщо назвати деякі ваші функції іменами, які перетинаються з іменами функцій у стандартній бібліотеці, Ви отримаєте конфлікт імен, тобто перевизначення функції зі стандартної бібліотеки, що може призвести до невизначеності та помилок у програмі. Завдяки простору імен можна уникнути цієї проблеми, просто помістивши функції в namespace .


  1. namespace My_code
  2. {
  3. class complex { /* ... */ };
  4. complex sqrt(complex);
  5. // ...
  6. int main();
  7. }
  8.  
  9. int My_code::main()
  10. {
  11. complex z {1,2};
  12. auto z2 = sqrt(z);
  13. std::cout << '{' << z2.real() << ',' << z2.imag() << "}\n";
  14. // ...
  15. };
  16.  
  17. int main()
  18. {
  19. return My_code::main();
  20. }

В даному випадку простір My_code дозволяє написати окрему реалізацію функції main() , яка буде викликатись у реальній функції main() , для цього потрібно викликати функцію main() через простір імен My_code .

  1. My_code::main();

Аналогічним способом викликаються функції зі стандартної бібліотеки, наприклад:

  1. std::max(3, 5);

Для того, щоб полегшити собі життя і не писати щоразу std можна використовувати директиву using .

  1. using namespace std;

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
  • Останні коментарі
  • Evgenii Legotckoi
    16 квітня 2025 р. 17:08
    Благодарю за отзыв. И вам желаю всяческих успехов!
  • IscanderChe
    12 квітня 2025 р. 17:12
    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
  • AK
    01 квітня 2025 р. 11:41
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    09 березня 2025 р. 21:02
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    09 березня 2025 р. 16:14
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…