Составители:
Рубрика:
33
В последнем примере определены два класса ClassA и ClassB, а также внеш-
няя функция func, объявленная дружественной в обоих классах, благодаря чему
func имеет доступ к частным компонентам x и y классов. При этом функция func
является внешней по отношению к классу функцией и объекты класса должны ли-
бо передаваться ей
в качестве параметров, либо объявляться в теле функции. Не-
явной передачи адреса объекта в дружественную функцию при вызове, как это
осуществляется для компонентных функций класса, не происходит.
Дружественная классу функция может быть компонентной функцией другого
класса. Рассмотрим пример, в котором помимо уже известного класса «клиент
банка», определен класс «банк», и организуется
взаимодействие этих классов.
//Листинг 16. Дружественные функции из других классов.
#include <iostream.h>
#include <conio.h>
#include <string.h>
class bank;
class client
{ char * name;
char numb[10];
float value;
char BankName[20]; //название банка, в котором хранится вклад
static float percent;
public:
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;}
void SetBank(bank&); //функция записи клиента в список клиентов банка
};
float client::percent=0.1;
client::client(char* s="Без имени",char *n="N0000",float x=0)
{ int k=strlen(s);
name=new char[k+1];
strcpy(name,s);
strcpy(numb,n);
value=x;
}
В последнем примере определены два класса ClassA и ClassB, а также внеш- няя функция func, объявленная дружественной в обоих классах, благодаря чему func имеет доступ к частным компонентам x и y классов. При этом функция func является внешней по отношению к классу функцией и объекты класса должны ли- бо передаваться ей в качестве параметров, либо объявляться в теле функции. Не- явной передачи адреса объекта в дружественную функцию при вызове, как это осуществляется для компонентных функций класса, не происходит. Дружественная классу функция может быть компонентной функцией другого класса. Рассмотрим пример, в котором помимо уже известного класса «клиент банка», определен класс «банк», и организуется взаимодействие этих классов. //Листинг 16. Дружественные функции из других классов. #include#include #include class bank; class client { char * name; char numb[10]; float value; char BankName[20]; //название банка, в котором хранится вклад static float percent; public: 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;} void SetBank(bank&); //функция записи клиента в список клиентов банка }; float client::percent=0.1; client::client(char* s="Без имени",char *n="N0000",float x=0) { int k=strlen(s); name=new char[k+1]; strcpy(name,s); strcpy(numb,n); value=x; } 33
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »