Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

1.7. Друзья классов 1.7.2. Дружественный класс

Лекция



Привет, сегодня поговорим про дружественный класс, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое дружественный класс , настоятельно рекомендую прочитать все из категории С++ (C plus plus).

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

Например,

class X2{friend class X1; . . .};

class X1

{. . .

  void f1(. . .);

  void f2(. . .);

  . . .

};

// В этом примере функции  f1  и  f2  класса  Х1 являются друзьями класса  Х2, хотя они

// описываются без спецификатора friend.

 

Пример 1.7.2

     Рассмотрим класс point – точка в n-мерном пространстве и дружественный ему класс vector – радиус-вектор точки (“вектор с началом в начале координат n-мерного пространства”). В классе vector определим функцию для определения нормы вектора, который вычисляется как сумма квадратов координат его конца.

class point

{int N;          // размерность

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

  friend class vector;

public:

  point(int n,double d = 0.0);

};

point : : point(int n,double d)

{N = n;

  x = new double[N];

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

}

class vector

{double *xv;

  int N;

public:

  vector(point,point);

  double norma();

};

vector : : vector(point begin,point end)

{N = begin.N;

  xv = new double[N];

  for(int i = 0; i < N; i++) xv[i] = end.x[i]–begin.x[i];

}

double vector : : norma()

{double dd = 0.0;

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

  return dd;

}

void main(void)

{point A(2,4.0);

  point B(2,2.0);

  vector V(A,B);

  cout<<V.norma();

}

// Будет выведено – 8.

     Недостатком предложенного класса  point  является то, что значения всех координат точки  x[i]  одинаковы. Об этом говорит сайт https://intellect.icu . Чтобы они были произвольными и разными, необходимо определить конструктор как функцию с переменным числом параметров, например так:

point : : point(int n,double d,. . .)

{

  N = n;

  x = new double[N];

  double *p = &d;

  for(int i = 0; i < N; i++){x[i] = *p; p++;}

}

В общем, мой друг ты одолел чтение этой статьи об дружественный класс. Работы впереди у тебя будет много. Смело пиши комментарии, развивайся и счастье окажется в твоих руках. Надеюсь, что теперь ты понял что такое дружественный класс и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории С++ (C plus plus)

Из статьи мы узнали кратко, но содержательно про дружественный класс
создано: 2015-12-20
обновлено: 2021-03-13
132408



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

С++ (C plus plus)

Термины: С++ (C plus plus)