Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по С++.doc
Скачиваний:
34
Добавлен:
15.12.2018
Размер:
2.31 Mб
Скачать

Уточнённое имя принадлежит классу (т.Е. Компонентной) функции

<имя объекта> . <обращение к компонентной функции>

обеспечивает вызов компонентов функции класса для обработки данных именно того объекта, имя которого использовано в уточнённом имени. Например, можно таким образом определить значения компонентных данных для определённых выше объектов класса complex:

x1 . def( ); // Параметры выбираются по умолчанию: re==0.0, im==0.0

x2 . def( 4.3,20.0); // Комплексное число 4.3+i*20.0

C помощью принадлежащей классу complex функции disp( ) можно вывести на экран значения компонентных данных любого из объектов класса. Например, следующий вызов принадлежащей классу complex функции:

x2 . disp( );

приведёт к печати

real=4.3 , imag=20.0;

Другой способ доступа к элементам объекта некоторого класса предусматривают явное использование указателя на объект класса и операции косвенного выбора компонента ( ' –>') :

<указатель на объект класса> -> <имя класса>

Определив, как сделано выше, указатель point, адресующий объект D класса complex, можно следующим образом присвоить значения данного объекта D:

point -> re=2.3; // Присваивание значения элементу области D

point -> im=6.1; // Присваивание значения элементу области D

Указатель на объект класса позволяет вызывать принадлежащие классу функции для обработки данных того объекта, который адресуется указателями. Формат вызова функции:

<указатель на объект класса> -> <обращение к компонентной функции>

Например, вызвать компонентную функцию disp( ) для данных объекта D позволяет выражение

point -> disp( );

В качестве второго примера рассмотрим класс, описывающий товары на складе магазина. Компонентами класса будут:

  • Название товара

  • Оптовая (закупочная) цена

  • Розничная (торговая) наценка

  • Функция ввода данных о товаре

  • Функция печати (вывода на дисплей) сведений о товаре с указанием розничной цены.

Определение класса:

// GOODS.H - класс «товары на складе магазина»

#include “iostream.h”

class goods

{

char name [40];

float price;

static int percent; // Торговая наценка, в %

// Компонентные функции

void input ( ) // Ввод сведений о товаре

{

cout << «Наименование товара: »; cin >> name;

cout << «Закупочная цена: »; cin >> price;

}

void disp( ) // Вывод данных о продаваемом товаре

{

cout << « \n» << name;

cout << «, розничная цена: »;

cout << long ( price * ( 1.0 + goods : : percent *0.01));

}

};

Торговая наценка определена как статический компонент класса. Статические компоненты классов не «дублируются» при создании объектов класса, то есть каждый статический компонент существует в единственном экземпляре. Доступ к статическому компоненту возможен только после его инициализации. Для инициализации используется конструкция:

<тип> <имя класса> : : <имя компонента> <инициализатор>;

В нашем примере может быть такой вариант:

int goods : : percent=12;

Это предложение должно быть размещено в глобальной области после определения класса. Только при инициализации статический компонент класса получает память и становится доступным. Для обращения к статическому компоненту используется квалифицированное имя:

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

Кроме того, статический компонент доступен «через» имя конкретного объекта:

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

либо

<имя объекта>. <имя компонента>