89792

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

Лекция

Информатика, кибернетика и программирование

Дружественной функцией класса называется функция, которая, не являясь его компонентом, имеет доступ к его защищенным и собственным компонентам. Функция не может стать другом класса без «его согласия»...

Русский

2015-05-13

36.91 KB

4 чел.

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

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

Дружественной функцией класса называется функция, которая, не являясь его компонентом, имеет доступ к его защищенным и собственным компонентам. Функция не может стать другом класса без «его согласия»;

Дружественная функция:

  •  не может быть компонентной функцией того класса, по отношению к которому определяется как дружественная;
  •  может быть компонентной функцией другого ранее определенного класса;
  •  может быть глобальной функцией;
  •  может быть дружественной по отношению к нескольким классам;
  •  при вызове не получает указателя this.

Пример #9. Точка и прямая на плоскости

#include <iostream.h>

class line2;

class point2

{ float x,y;

public: 

point2(float xn=0.0, float yn=0.0)

{x=xn; y=yn;}

friend float uclon(point2, line2);

};

class line2

{ float A, B, C;

public:

line2(float a, float b, float c)

{A=a; B=b; C=c;}

friend float uclon(point2, line2);

};

float uclon(point2 p, line2 l)

{ return l.A* p.x+l.B* p.y+ l.C;}

void main()

{point2 P(16.0, 12.3);

line2 L(10.0,-42.3, 24.0);

cout <<“\n Уклонение точки Р от прямой L: ”;

cout<<uclon(P, L);

}

Дружественные классы

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

Пример #10. Точка и вектор в N-мерном пространстве

#include <iostream.h>

#include <stdlib.h>

class pointN

{ int Npoint;//размерность пространства

double *x;//указатель на массив координат точки

friend class vectorN;//дружественный класс

public:

pointN(int n, double d=0.0);//конструктор точек

};

// определение конструктора

pointN::pointN(int n, double d)

{ Npoint=n;

x=new double [Npoint];

for (int i=0; i<Npoint; i++) x[i]=d;}

class vectorN

{ double *xv; //указатель на массив координат вектора

int Nvector;//размерность пространства

public:

vectorN (pointN, pointN);//конструктор векторов

double norm();

};

// определение конструктора

vectorN::vectorN(pointN beg, pointN end)

{ if (beg.Npoint != end.Npoint)

{ cerr<<“\n Ошибка в размерностях точек!”;

exit(1);}

Nvector=beg.Npoint;

xv=new double [Nvector];

for (int i=0; i<Nvector; i++) xv[i]=end.x[i]-beg.x[i];

}

// вычисление нормы вектора

double vectorN::norm()

{ double dd=0.0;

for (int i=0; i<Nvector; i++)  dd+=xv[i]*xv[i];

return dd;

}

void main(void)

{

pointN A(2, 4.0); pointN B(2, 2.0);

vectorN V(A,B);

cout<<“\n Норма вектора AB:” <<V.norm();

pointN X(3, 2.0);

vectorN Z(A,X);//ошибка в размерностях точек

}


 

А также другие работы, которые могут Вас заинтересовать

55258. Найважливіші принципи розміщення продуктивних сил, їх значення для ефективного розміщення підприємств і галузей 24.31 KB
  Принцип розміщення підприємств згідно з раціональними формами суспільної організації виробництва. До таких форм належать концентрація, спеціалізація, кооперування й комбінування.
55260. Природно-ресурсний потенціал, його структура. Забезпеченість України природними ресурсами 25.81 KB
  Природно-ресурсний потенціал території – цілісна система складноорганізованих обєктів, цілісність якого визначається закономірним сполученням взаємозумовлених природних і соціально-економічних звязків і залежностей, що поєднують територіально всі природні ресурси
55261. Презентация фрагментов работы учащихся 7-го класса по созданию учебного проекта «Построение средневекового города в Киевской Руси и Британии» (в рамках «global simulation») 58 KB
  Смещается акцент с фронтальной на групповую парную и самостоятельную работу результат выводится на продуктивный уровень обеспечивается развивающий потенциал уроков наряду с познавательной активностью и в довершении способствует формированию навыков командной работы. Тема: Презентация фрагментов работы учащихся 7го класса по созданию учебного проекта Построение средневекового города в Киевской Руси и Британии в рамках globl simultion Тип урока: интегрированный с использованием билингвальных технологий. Цели урока: представить...
55263. Основні фактори розміщення продуктивних сил, їх вплив на розміщення виробництва 25.69 KB
  Фактори розміщення це реалізація закономірностей і принципів при врахуванні конкретних умов, що впливають на вибір місць розташування промислових підприємств і формування територіально-виробничих комплексів.
55264. Поняття компютерної презентації. Основне призначення системи підготовки презентації 68.5 KB
  Мета уроку: навчальна: отримати уявлення про мультимедіа, познайомитися з програмою для створення мультимедійних презентацій; навчитися технології створення і демонстрації електронних презентацій; розвиваюча: розвиток мислення, пізнавальних інтересів, навиків роботи на компютері, роботи з мультимедійними програмними засобами...
55265. Чисельність населення України, особливості його динаміки. Природний рух населення. Демографічна ситуація в Україні, основні шляхи її розв’язання 25.61 KB
  Демографічні передумови є найважливішою складовою розміщення продуктивних сил. Населення країни фактор її комплексного економічного та соціального розвитку. Населення це трудові ресурси і споживач, яке впливає на формування міжрайонних функцій виробництва, потужність і структуру потоку продукції, що вивозиться за межі певної території, розвиток місцевого виробництва.
55266. Комп’ютерна презентація 107.5 KB
  Мета: 1) ввести поняття “презентація”, навчити учнів проектувати презентації, ознайомити з програмою Power Point та її можливостями. З’ясувати призначення комп’ютерної презентації. 2) розвивати алгоритмічне та логічне мислення, вміння порівнювати, виділяти головне, роботи узагальнення і висновки. Розвивати пізнавальну, комунікативну та інформаційну компетентності.