Предефиниране на оператори

   Оператори – това бяха запазените служебни думи с които се пишат програмите в с++ .
Оператори са: cout ,if else, +, -, class,return и т.н. Предефинирането на оператори означава,
че повечето оператори в с ++ могат промеят своето действие в
зависмост от вашето желание за класа, в който са били дефинирани.
Например можем да променим оператора + да изважда числа,
но това използване е абсолютно неправилно.
Желателно е когато предефинирате оператори тяхното действие да се подразбира.
Декларация :
     тип operator знак (аргументи);
 operator - служебната дума за предефиниране;
 знак - оператора (знака), който ще се предефинира;
 тип - типът на връщания аргумент
Най-често предлагания пример за предефиниране на оператори е
оператора + , който може да събере c=a+b , но не може да събере
векторите а(3,1) + b(3,3) = c(6,4) следващия пример ще предефинираме
оператора + ,чрез който можем да съберем тези вектори.
#include <iostream> //for Code Blocks
using namespace std;
class vector
{
public:
int x,y;
vector (){x=0;y=0;}
vector (int ,int);
vector operator + (vector);
};
vector ::vector(int a,int b)
{
x=a;
y=b;
}
vector vector::operator + (vector arg)
{
vector d;
d.x=x+arg.x;
d.y=y+arg.y;
return (d);
}
int main()
{
vector a(3,1);
vector b(4,4);
vector c;
c=a+b;
cout<<"a("<<a.x<<","<<a.y<<")"<<endl;
cout<<" +"<<endl;
cout<<"b("<<b.x<<","<<b.y<<")"<<endl;
cout<<"--------"<<endl;
cout<<"c("<<c.x<<","<<c.y<<")"<<endl;
return 0;
}

Благодаря за вниманието Ви !