Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Перегрузка операторов.






Форма для перегрузки операторов:

Объявление перегруженных операторов осуществляется так же, как и функций. Используется специальное слово: operator, за которым следует сам перегружаемый оператор. В функциях с одним операндом параметры не задаются

Const класс & класс:: operator …();

Перегрузка оператора с двумя операндами требует наличия параметров (константные ссылки на объекты этих классов):

Класс класс:: operator + (const класс & rhs) — заголовок и след. Описание

Класс operator + (const класс &)

Рекомендации:

§ перегружайте операторы. Если код программы после этого станет чётче и понятнее.

§ Возвращайте объекты класса из перегруженных операторов.

§ Не увлекайтесь созданием перегруженных операторов, выполняющих несвойственные им функции.

 

#include< iostream.h>

Class V_3d

{

Double x, y, z;

public:

V_3d(const V_3d & v1); // конструктор -копировщик

V_3d(double x1=0, double y1=0, double z1=0):

// конструктор со значениями по умолчанию

x(x1), y(y1), z(z1) {}; // инициация переменных-членов

void print(); // печать объекта класса

V_3d operator +(V_3d t); // перегрузка оператора +

V_3d operator =(V_3d t); // перегрузка оператора =

friend ostream & operator < < (ostream & stream, V_3d t);

friend istream & operator > > (istream & stream, V_3d & t );

double mod(); // функция модуля

};


V_3d:: V_3d(const V_3d & v1)

{ x=v1.x;

y=v1.y;

z=v1.z;

}

void V_3d:: print()

{

cout< < " x=" < < x< < " y=" < < y< < " z=" < < z< < " \n";

}

V_3d V_3d:: operator +(V_3d t)

{

V_3d c;

c.x=x+t.x; c.y=y+t.y; c.z=z+t.z;

Return c;

}

V_3d V_3d:: operator =(V_3d t)

{

x=t.x; y=t.y; z=t.z;

return *this;

}

ostream & operator < < (ostream & stream, V_3d t)

{

stream< < " x=" < < t.x< < ", ";

stream< < " y=" < < t.y< < ", ";

stream< < " z=" < < t.z< < " \n";

Return stream;

}

istream & operator > > (istream & stream, V_3d & t)

{

stream > > t.x> > t.y> > t.z;

Return stream;

}

double V_3d:: mod()

{

return x*x+y*y+z*z;

}

Void main(void)

{

V_3d a;

V_3d b(4, 7, 10);

V_3d c(b);

cout < < " координаты вектора b: \n";

cout < < b;

cout < < " координаты вектора c: \n";

C.print();

cout < < " введите координаты вектора a: \n";

cin > > a;

cout < < " координаты вектора а: \n";

cout < < a;

c=a+b;

cout < < " координаты вектора a+b \n";

C.print();

}

Результат работы программы:

координаты вектора b:

x=4, y=7, z=10

координаты вектора c:

x=4 y=7 z=10

введите координаты вектора a:

-1 3 6

координаты вектора а:

x=-1, y=3, z=6

координаты вектора a+b

x=3 y=10 z=16







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.