Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
распечатать.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
160.66 Кб
Скачать

27. Пространства имён. Примеры.

Пространство имен – просто область видимости. Оно предназначено для локализации имен идентификаторов и предотвращения конфликтов между ними. Элементы, объявленные в одном пространстве имен, отделены от элементов, принадлежащих другому пространству.

using namespase std;

Ключевое пространство namespace позволяет разделить глобальное пространство имен на декларативные области.

namespace name

{

//объявления

}

Все, что объявлено в разделе namespace, находится внутри области видимости этого пространства имен.

28. Статические члены класса. Примеры.

Переменные и члены класса, объявленные с модификатором доступа static, называются статическими членами класса. Статические переменные и методы доступны без создания объекта данного класса. Имя статической переменной квалифицируется именем класса с использованием операции принадлежности :: , а не именем экземпляра класса.

Например: class A { public: static int iStat; }; int main(int argc, char* argv[]) { A:: iStat = 123; }

Статические методы могут вызывать и использовать только другие статические методы и статические переменные. Из статического метода нельзя выполнять вызов не статического метода - члена класса. Статическую переменную можно рассматривать как аналог глобальной переменной, которая связана с конкретным классом. Часто статические переменные называют переменными класса, а не статические переменные - переменными экземпляра. Для статических переменных могут использоваться указатели.

Например: class A { public: static int iStatVar; }; int main(int argc, char* argv[]){ int A:: iStatVar = 0; int *piStatVar = &A:: iStatVar; }

При использовании статических переменных указатели всегда являются указателями на существующий тип (в данном примере на тип int), а не на тип класса.

Для того чтобы создать и использовать статическую переменную, следует:

  1. Объявить (как правило, в заголовочном файле) статическую переменную как член класса.

Например: static int iStat;.

  1. Для выделения памяти под эту переменную ее повторно следует объявить в модуле компиляции, в котором она будет использоваться, квалифицируя имя статической переменной именем класса.

Например: int A::iStat;

  1. Выполнить инициализацию статической переменной (по умолчанию статическая переменная типа int имеет значение 0).

Например: A::iStat=123;

Инициализацию статической переменной можно выполнять в теле конструктора в том случае, если при создании объекта с использованием этого конструктора память под статическую переменную уже выделена. Однако инициализировать статическую переменную через конструктор в форме имя_класса::имя_конструктора : имя_стат_переменной(значение) { } нельзя ни в каком случае.

29. Операторы .* и ->* . Примеры.

Указатель на член m можно использовать в комбинации с объектом. Например, p->*m связывает m с объектом, на который указывает р, а obj.*m связывает m с объектом obj. Невозможно сохранить результат этих операций для его дальнейшего использования.