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