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

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

Объявление перегруженных операторов осуществляется так же, как и функций. Используется специальное слово: 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









Дата добавления: 2015-12-26; просмотров: 634;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.