Void main ( )

{ cot::count(500); …

//изменение статического компонента до объявления объектов

}

5) Указатели на компоненты класса

Определение указателя на компонентные данные класса:

тип данных(имя класса::*имя указателя)

В определение можно включить и инициализацию

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

int (stroka::*plen)=&stroka::len;

// -не верно, т.к. len – имеет статус private

При инициализации надо использовать общедоступные компоненты.

После объявления объекта к его компонентам следующий формат обращения через указатель:

имя объекта.* указатель на компонент данных;

Если определен указатель на объект формат обращения:

Указатель на объект-> *указатель на компонент данных;

Определение указателей на компонентные функции

Тип возвращаемого результата (имя класса::*имя указателя на метод)

(спецификация параметров функции);

void (book::*fprt)(void) = & book::show_book;

// определение указателя на компонентные функции класса book и

// инициализация указателя компонентной функцией show_book

И форматы обращения к методам через указатели:

Имя объекта.*указатель на метод(параметры);

Указатель на объект-> *указатель на метод (параметры);

Пример:

book A (“C и C++”, “Б.И.Березин, 40.0); // определен объект

void (book::*fprt)(void) = & book::show_book;

(A.*fptr) () // выведет на печать значения объекта

Если в определении класса было бы несколько идентичных функций указатель fptr можно “настроить” на другие функции

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

Если определение функции полностью размещено в классе, то эта функция по умолчанию считается подставляемой, т.е. при каждом вызове код функций встраивается в точку вызова.

При внешнем определении в теле класса располагается прототип функции:

<Тип> <имя функции >(спецификация формальных параметров);

Вне тела класса компонентная функция определяется следующим образом:

<Тип ><имя класса>::<имя функции>(спецификация формальных

Параметров)

{ тело функции };

Функция компонент класса имеет туже область видимости, что и класс.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: