
- •1. Объявление класса. Примеры. Понятие инкапсуляции, полиформизма, наследования.
- •2. Доступ к членам класса. Управление доступом к членам класса. Указатель this. Примеры.
- •3. Конструкторы и деструкторы. Параметризованные конструкторы. Примеры.
- •4. Дружественные ф-ции. Примеры.
- •5. Перегрузка функций. Значение аргументов ф-ции по умолчанию. Примеры.
- •6. Наследование. Примеры.
- •7. Передача объектов в ф-ции и возврат объекта из ф-ции. Массивы объектов. Примеры.
- •8. Перегрузка операторов при помощи функций-членов класса. Примеры.
- •9. Перегрузка операторов при помощи дружественных ф-ций. Примеры.
- •10. Ссылки, ссылки на объекты. Примеры.
- •11. Конструктор копирования. Примеры
- •12. Наследование и спецификаторы доступа. Примеры.
- •13. Конструкторы и деструкторы производных классов. Примеры.
- •14. Указатели и ссылки на производные типы. Примеры.
- •Ссылки на производные классы
- •15. Виртуальные ф-ции. Примеры.
- •16. Чисто виртуальные ф-ции и абстрактные классы. Примеры.
- •17. Обработка исключений. Примеры.
- •18. Создание собственных операторов вставки и извлечения. Примеры.
- •19. Файловый ввод-вывод. Примеры.
- •20. Формирование ввода-вывода. Примеры.
- •21. Двоичные файлы. Примеры.
- •22. Произвольный доступ. Примеры.
- •23. Ввод-вывод в массивы Примеры.
- •24. Класс string. Примеры.
- •25. Функции-шаблоны. Примеры.
- •Явная перегрузка функций-шаблонов
- •26. Классы-шаблоны. Примеры.
- •27. Пространства имён. Примеры.
- •28. Статические члены класса. Примеры.
- •30. Идентификация типа во время исполнения. Примеры.
- •31. Новые операторы приведения типов. Примеры.
- •32. Контейнерные классы. Примеры.
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), а не на тип класса.
Для того чтобы создать и использовать статическую переменную, следует:
Объявить (как правило, в заголовочном файле) статическую переменную как член класса.
Например: static int iStat;.
Для выделения памяти под эту переменную ее повторно следует объявить в модуле компиляции, в котором она будет использоваться, квалифицируя имя статической переменной именем класса.
Например: int A::iStat;
Выполнить инициализацию статической переменной (по умолчанию статическая переменная типа int имеет значение 0).
Например: A::iStat=123;
Инициализацию статической переменной можно выполнять в теле конструктора в том случае, если при создании объекта с использованием этого конструктора память под статическую переменную уже выделена. Однако инициализировать статическую переменную через конструктор в форме имя_класса::имя_конструктора : имя_стат_переменной(значение) { } нельзя ни в каком случае.
29. Операторы .* и ->* . Примеры.
Указатель на член m можно использовать в комбинации с объектом. Например, p->*m связывает m с объектом, на который указывает р, а obj.*m связывает m с объектом obj. Невозможно сохранить результат этих операций для его дальнейшего использования.