CPP-101: Пространство от имена (namespace)

Пространствата от имена (namespaces) са въведени в C++ като поддръжка на така нареченото модулно програмиране. По същество пространствата от имена позволяват изграждането на дървовидна структура от имена на идентификаторите в една C++ програма като по този начин намаляват риска от конфликт на имената.

Да си представим за момент, че файловата структура на някакъв компютър няма добре познатата йерархична структура от директории, поддиректории и файлове. В такъв случай всички файлове биха се съхранявали в едно общо глобално хранилище, което се вижда постоянно от всеки потребител и приложение. Като следствие от подобна ситуация биха възникнали ред трудности при преглеждане, търсене или копиране на файлове. Освен това лесно може да си представим за многобройни конфликти на имената на файловете, когато различни потребители искат да използват едно и също име за два различни файла.

Подобно е и положението при една програма, когато нейният размер започне да нараства – конфликтите на имена започват да стават често явление. Точно за решаването на този проблем в C++ са въведени пространствата от имена. Пространствата от имена са аналогични на директориите в горния пример. Те могат да бъдат влагани едно в друго и да образуват йерархични структури от имена, подобни на файловата система. Такава йерархична структура от имена може лесно да предпази кода на една програма от конфликти на имената. Повечето от компонентите на стандартната C++ библиотека например, са групирани в пространството от имена std. То от своя страна е разделено на подпространства от имена.

Дефиниране на пространство от имена

За дефиниране на именувано пространство от имена се използва ключовата дума namespace. Например:

namespace elsys {
    class School {
        ...
    };
    class Student {
        ...
    };
};

В този фрагмент са декларирани два класа School и Student като членове на пространството от имена elsys.

Към едно пространство от имена винаги може да се добавят нови имена. Например, в следващия фрагмент към пространството от имена elsys се добавя класа Teacher:

namespace elsys {
    class Teacher {
    ...
    };
};
Публикувано в CPP-101, ООП с етикети , , . Постоянна връзка.

Един коментар по CPP-101: Пространство от имена (namespace)

  1. Pingback: CPP-101: Кратък обзор на езика за програмиране C++ | Записки по програмиране

Коментарите са затворени.