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

}


 

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

76537. Методы и приемы обучения русскому языку 40 KB
  Метод - способы взаимодействия учителя и ученика, направленные на достижение положительных результатов обучения. Положительные результаты - достижение цели. Действия: учение и обучение. Классификация Дубникова (основа: характеристика способов мышления - индукция(от частного к общему) и дедукция)
76538. Диктант как метод обучения и форма контроля 32 KB
  Диктант как метод обучения и форма контроля. Среди упражнений с помощью которых происходит формирование умений и навыков используется списывание простое и осложненное обучающие диктанты а также упражнения творческого характера: конструирование словосочетаний и предложений изложения и сочинения малых форм; разные виды грамматического разбора. В методике разработаны различные виды обучающих диктантов. Диктант с карточками удобен на первых этапах закрепления: дети записывают слова поднимая карточку с изучаемой орфограммой что позволяет...
76539. Теоретические методы усвоения русского языка 26.5 KB
  Теоретические методы усвоения русского языка. Федоренко выделяет методы практического изучения языка объяснение непонятных слов подготовка устных сообщений письменных сочинений составление планов конспектов тезисов исправление ошибок грамматических и стилистических обучение работе со справочной литературой методы теоретического изучения языка беседа сообщение чтение правил в учебнике методы теоретикопрактического изучения языка различные упражнения: при изучении грамматики грамматический разбор анализ готового материала...
76540. Языковой разбор и его роль в формировании знаний, навыков и умений обучающихся 30 KB
  Языковой разбор и его роль в формировании знаний навыков и умений обучающихся. Языковый разбор представляет собою лингвистический анализ и толкование предложенного учителем дидактического материала: это могут быть отдельные слова предложения небольшие тексты. Языковый разбор основывается на рецептивной деятельности учащихся так как проводится на готовом языковом материале восприятие которого сквозь призму изученных понятий и правил и составляет суть метода. В зависимости от того какое умение отрабатывается различаются следующие виды...
76542. Методы практического изучения языка и обучения речи. Анализ текста на уроке русского языка 26.5 KB
  Анализ текста на уроке русского языка. Сочинение вид письменной школьной работы изложение своих мыслей знаний на заданную тему Анализ текста. анализ текста создаёт условия для формирования у школьников представления о языковой системе реализации внутрипредметных межуровневых а также метапредметных связей включает уроки русского языка в единую систему филологического образования. Определить тему и проблему текста 3.
76543. Урок как основная форма обучения. Основные свойства и структура урока 32.5 KB
  Урок как основная форма обучения. Основные свойства и структура урока. Классификация: урок объяснение новых знаний введение новых теоретических понятий уроки закрепления формирования умений и навыков урок повторения и обобщения урок контролирования или контрольный урок. комбинированный урок классический Классификация в соответствии с ведущим методом обучения: урок лекция урок семинар урок практикум урок зачетТак же выделяются уроки развития речи2 направления: развитие речи на уроке с любой темой то есть изучение грамматики и...
76545. Методика изучения раздела «фонетика, графика, орфоэпия». Цели, содержание, методы обучения 31 KB
  Необходимо при изучении словообразования: буквы имеющие два один звук. Цель изучения: осознаное усвоение звуковой системы языка; знакомство с орфоэпическими нормами СРЛЯ; формирование орфографических навыков.Задачи:Формирование основных фонетических понятий: звук слог ударение интонация; ать представление о русской графике как науке устанавливающей общие принципы передачи звучащей речи на письме; Развивать фонематический слух учащегося и на этой основе формировать орфографическую грамотность школьника; Закрепить умение обозначить звуки...