![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Тело класса и составные функции
Класс – это производный структурированный тип, определяемый пользователем на основе уже существующих базовых типов. Механизм классов позволяет создавать типы в полном соответствии с принципами абстракции данных, т.е. класс задает некоторую структурированную совокупность типизированных данных и позволяет определить набор операций над этими данными. Класс можно определить с помощью инструкции объявления: ключ_класса имя_класса { компоненты_класса }; где ключ_класса – одно из ключевых слов class, struct, union; имя_класса – произвольно выбираемый идентификатор; компоненты_класса – объявления типизированных данных и принадлежащих классу функций. Компонентами класса могут быть данные, функции, вложенные классы, перечисления, битовые поля, дружественные функции, дружественные классы и имена типов.
Для доступа к компонентам класса, например, можно использовать имя_класса в качестве квалификатора: квалификация без указания имени объекта (полная квалификация) имя_класса::имя_компонента_класса квалификация с указанием имени объекта имя_объекта .имя_класса::имя_компонента_класса Квалификатор имя_класса вместе с оператором разрешения области видимости :: могут быть опущены, тогда для доступа к компонентам объекта класса, например, можно использовать уточненные имена: имя_объекта .имя_компонента_данных имя_объекта .имя_компонентной_функции(список_аргументов_вызова) Тело функции — это просто составной оператор. Составной оператор содержит операторы, которые определяют действия функции, и может также содержать объявления переменных, используемых в этих операторах. Все переменные, объявленные в теле функции, имеют тип памяти auto, если они не объявлены иначе. Когда вызывается функция, то создается память для локальных переменных и производится их инициализация (если она задана). Управление передается первому оператору составного оператора и начинается процесс выполнения, который продолжается до тех пор, пока не встретится оператор returnили конец тела функции. Управление при этом возвращается в точку вызова. Если функция возвращает значение, то должен быть выполнен оператор return, содержащий выражение. Значение возврата не определено, если не выполнен оператор returnили если в оператор returnне было включено выражение.
Указатели на массивы. Указатели на строки. Указатели - это переменные, которые содержат адрес адреса данных. В С++ указатели могут быть на любой тип данных. Если необходимо, можно описать массив указателей. int*ip[ 10 ];массив указателей на целые значения из 10 элементов. С указателем можно производить некоторые арифметические операции. Например, при работе с массивами. Пусть sub содержит номер элемента массива, тогда до этого элемента можно "добраться" mas [ sub ]или *(mas +sub)Т.к. имя массива фактически является указателем на нулевой элемент массива. Переменная sub указывает на сколько элементов необходимо сместиться. Вы можете инкрементировать и декрементировать указатель. При этом вы смещаетесь на один элемент, независимо от типа элемента. Допустим uk адрес нулевого элемента массива, тогда cout<<*uk; // вывод значения 0-го элемента uk++; cout<<*uk; // вывод значения 1-го элемента, реально смещение на несколько байтовuk+=2cout<<*uk; // вывод значения 3-го элемента.Наиболее полезное применение массивов указателей - это массив указателей на строки. Пример. char names [3] [20]= {{"Иванов"},{"Петров"},{"Сидоров "}};Схематично можно изобразить следующим образом Рисунок 1.7.2. Для вывода строки можно использовать
![]() |