Составители:
Рубрика:
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
- …
- следующая ›
- последняя »