Дружественные функции

Концепция дружественных функций может показаться несколько искусственной, но это не так Представим себе ситуацию, когда есть два класса с закрытыми полями и необходимо получить доступ к полям обоих классов Это один из тех случаев, когда целесообразным является применение дружественных функций. Пример приведен в листинге.
#include 
using namespace std;
//Анонс класса:
class B;
//Класс с закрытым полем:
class A{
double x;
public:
A(double z){x=z;}
//Дружественная функция с двумя аргументами:
friend double summa(A a,B b);
}a(3.5);
//Класс с закрытым полем:
class B{
double y;
public:
B(double z){y=z;}
//Дружественная функция с двумя аргументами:
friend double summa(A a,B b);
}b(2.3);
double summa(A a,B b){
return a.x+b.y;
}
int main(){
//Вызов дружественной функции:
cout << "Total is " << summa(a,b) << endl;
return 0;
}
Онлайн всего: 4
Гостей: 4
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте