Составители:
Рубрика:
37
Таким образом, благодаря преобразованиям транслятора, любая нестати-
ческая компонентная функция может использовать в своем теле указатель this.
При этом выражение this представляет адрес объекта, вызвавшего функцию, а
выражение *this представляет сам объект.
В языке С++ для класса кроме дружественной функции можно объявить
дружественной класс. Все компонентные функции дружественного класса
имеют доступ
к частным и защищенным компонентам того класса, в котором
он объявлен другом. Для того чтобы предоставить некоторому классу (назо-
вем его класс1) свойства друга другого класса (класс2) необходимо в теле
класса2 поместить следующую строку:
friend class имя_класса1;
После такого определения любая компонентная функция класса1 будет
иметь доступ к
любой компоненте класса2 независимо от присвоенной ей об-
ласти видимости. Рассмотрим пример взаимодействия дружественных клас-
сов.
//Листинг 17. Дружественный класс
#include <iostream.h>
#include <conio.h>
#include <string.h>
class bank;
class client
{ friend class bank; //объявляем класс bank дружественным классу client
client *next; //адрес следующего клиента в списке клиентов банка
char * name;
char numb[10];
float value;
static float percent;
client(char* ,char *,float);
void PrintClient() { cout<<"\nВывод инф-ии о клиенте\n"<<
name<<'\t'<<numb<<'\t'<<value;}
void ReadClient() { cout<<"\nВвод инф-ии о клиенте\n";
cin>>name>>numb>>value;}
static void ChangePercent(float p) { percent=p; }
void Add(float dx) { value+=dx; }
void AddPercent() { value*=percent+1; }
~client() { delete [] name;}
};
Таким образом, благодаря преобразованиям транслятора, любая нестати-
ческая компонентная функция может использовать в своем теле указатель this.
При этом выражение this представляет адрес объекта, вызвавшего функцию, а
выражение *this представляет сам объект.
В языке С++ для класса кроме дружественной функции можно объявить
дружественной класс. Все компонентные функции дружественного класса
имеют доступ к частным и защищенным компонентам того класса, в котором
он объявлен другом. Для того чтобы предоставить некоторому классу (назо-
вем его класс1) свойства друга другого класса (класс2) необходимо в теле
класса2 поместить следующую строку:
friend class имя_класса1;
После такого определения любая компонентная функция класса1 будет
иметь доступ к любой компоненте класса2 независимо от присвоенной ей об-
ласти видимости. Рассмотрим пример взаимодействия дружественных клас-
сов.
//Листинг 17. Дружественный класс
#include
#include
#include
class bank;
class client
{ friend class bank; //объявляем класс bank дружественным классу client
client *next; //адрес следующего клиента в списке клиентов банка
char * name;
char numb[10];
float value;
static float percent;
client(char* ,char *,float);
void PrintClient() { cout<<"\nВывод инф-ии о клиенте\n"<<
name<<'\t'<>name>>numb>>value;}
static void ChangePercent(float p) { percent=p; }
void Add(float dx) { value+=dx; }
void AddPercent() { value*=percent+1; }
~client() { delete [] name;}
};
37
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »
