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);//ошибка в размерностях точек

}


 

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

49296. Автоматизация поддержания параметров микроклимата в животноводческом помещении 1.02 MB
  Состояние микроклимата закрытых животноводческих помещений определяет комплекс физических факторов температура влажность движение воздуха солнечная радиация атмосферное давление освещение и ионизация газовый состав воздуха кислород углекислый газ аммиак сероводород и др. Описание работы технологической линии ОВС включает калорифер радиальный центробежный вентилятор магистральный воздуховод и воздуховоды равномерной раздачи воздуха выходные отверстия которых оборудованы жалюзийными решетками. Отопительновентиляционная...
49298. Характеристика різних інформаційно-довідкових підсистем, правової підтримки керівництва підприємства Українських розробників 60.96 KB
  2 Проблеми правової підтримки керівництва підприємства Метою державної підтримки підприємництва є: 1 створення умов для позитивних структурних змін в економіці України; 2 сприяння формуванню і розвитку підприємництва становлення підприємництва як провідної сили в подоланні негативних процесів в економіці та забезпечення сталого позитивного розвитку суспільства; 3 підтримка вітчизняних виробників; 4 формування умов для забезпечення зайнятості населення України запобігання безробіттю створення нових робочих місць. Державна підтримка...
49299. Малохвильовий перетворювач WAVELET 581.78 KB
  Дискретне Wvelets перетворення 11 Приклади застосування Wvelets перетворення. Інакше називають Wvelet аналізом. Слово Wvelet в перекладі з англійської мови означає елементарну хвилю.
49300. Періодичні видання 2.17 MB
  Потужні редактори для опису операцій звязків і обчислення витрат на виконання робіт; Ієрархічна структура діаграм що полегшує послідовне уточнення елементів моделі; Контекстні діаграми для опису меж системи області дії призначення обєктів; Декомпозиційні діаграми для опису особливостей...
49301. Проектування електричного освітлення системи загального рівномірного й евакуаційного освітлення заготівельного цеху 185.46 KB
  Світлотехнічний розрахунок системи загального рівномірного освітлення й визначення одиничної встановленої потужності джерел світла в приміщеннях. Вибір джерел світла типу світильників їхнього розміщення світлотехнічний розрахунок евакуаційного освітлення. Визначення місць розташування щитків освітлення й траси електричної мережі.
49302. Топографические съемки крупного масштаба 443.92 KB
  Для этого выбирается ось маршрута сопвадающая с северной рамкой. При создании карты масштаба 1:5000 с высотой сечения рельефа 2м высотные опознаки совмещают с плановыми планововысотные опознаки ОПВ. В качестве ОПВ выбирают чёткие контурные точки положение которых можно определить на снимке и отождествить на местности с точностью не превышающей 0. Нельзя ОПВ выбирать на крутых склонах на округлых контурах лета и сельскохозяйственных угодьях а также высоких построек.
49303. MathML как средство разметки 86.64 KB
  MathML реализует две точки зрения на математическую разметку. Один из ее видов - это разметка представления (Presentation Markup), которая описывает визуальную форму представления математической формулы. Второй - разметка содержания (Content Markup), выражающая семантическое содержание.
49304. Обзорный диспетчерский радиолокатор 60.03 KB
  Построение зоны обзора РЛС в вертикальной плоскости без учета влияния земной поверхности. Построение зоны обзора РЛС в вертикальной плоскости с учетом влияния земной поверхности . Построение зоны РЛС в горизонтальной плоскости с учетом углов закрытия . Условные обозначения Pu – импульсная мощность РЛС; – длительность импульса; G – коэффициент усиления антенны; λ – длина волны; ϭц – эффективная поверхность рассеивания ЭПР цепи; rэ – радиус экрана индикатора; Pn.