Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0495976_C19D7_shpory_s.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.82 Mб
Скачать
  1. Тело класса и составные функции.

Класс – это производный структурированный тип, определяемый пользователем на

основе уже существующих базовых типов. Механизм классов позволяет создавать

типы в полном соответствии с принципами абстракции данных, т.е. класс задает

некоторую структурированную совокупность типизированных данных и позволяет

определить набор операций над этими данными.

Класс можно определить с помощью инструкции объявления:

ключ_класса имя_класса {

компоненты_класса

};

где ключ_класса – одно из ключевых слов class, struct, union; имя_класса –

произвольно выбираемый идентификатор; компоненты_класса – объявления

типизированных данных и принадлежащих классу функций. Компонентами класса

могут быть данные, функции, вложенные классы, перечисления, битовые поля,

дружественные функции, дружественные классы и имена типов.

Для доступа к компонентам класса, например, можно использовать имя_класса в

качестве квалификатора:

квалификация без указания имени объекта (полная квалификация)

имя_класса::имя_компонента_класса

квалификация с указанием имени объекта

имя_объекта .имя_класса::имя_компонента_класса

Квалификатор имя_класса вместе с оператором разрешения области видимости ::

могут быть опущены, тогда для доступа к компонентам объекта класса, например,

можно использовать уточненные имена:

имя_объекта .имя_компонента_данных

имя_объекта .имя_компонентной_функции(список_аргументов_вызова)

Тело функции — это просто составной оператор. Составной оператор содержит операторы, которые определяют действия функции, и может также содержать объявления переменных,

используемых в этих операторах. Все переменные, объявленные в теле функции, имеют тип памяти auto, если они не объявлены иначе. Когда вызывается функция, то создается память для

локальных переменных и производится их инициализация (если

она задана). Управление передается первому оператору

составного оператора и начинается процесс выполнения,

который продолжается до тех пор, пока не встретится оператор

return или конец тела функции. Управление при этом

возвращается в точку вызова.

Если функция возвращает значение, то должен быть

выполнен оператор return, содержащий выражение.

Значение возврата не определено, если не выполнен

оператор return или если в оператор return не было включено

выражение.

  1. Указатели на массивы. Указатели на строки.

Указатели - это переменные, которые содержат адрес адреса данных. В С++ указатели могут быть на любой тип данных.

Если необходимо, можно описать массив указателей.

int*ip[ 10 ];

массив указателей на целые значения из 10 элементов.

С указателем можно производить некоторые арифметические операции. Например, при работе с массивами.

Пусть sub содержит номер элемента массива, тогда до этого элемента можно "добраться"

mas [ sub ]

или

*(mas +sub)

Т.к. имя массива фактически является указателем на нулевой элемент массива. Переменная sub указывает на сколько элементов необходимо сместиться. Вы можете инкрементировать и декрементировать указатель. При этом вы смещаетесь на один элемент, независимо от типа элемента.

Допустим uk адрес нулевого элемента массива, тогда

cout<<*uk; // вывод значения 0-го элемента

uk++;

cout<<*uk; // вывод значения 1-го элемента, реально смещение на несколько байтов

uk+=2

cout<<*uk; // вывод значения 3-го элемента.

Наиболее полезное применение массивов указателей - это массив указателей на строки.

Пример.

char names [3] [20]= {

{"Иванов"},

{"Петров"},

{"Сидоров "}

};

Схематично можно изобразить следующим образом

Рисунок 1.7.2.

Для вывода строки можно использовать

cout<< *names; //Печать Иванов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]