// Define um tipo de
dados novo typedef struct PONTO{ int x,y; PONTO operator+ (PONTO &v1); PONTO operator* (PONTO &v1); PONTO operator- (PONTO &v1); PONTO operator- (); // menos Unário void operator= (int n); // atribuicao void operator! (); // impressao void Imprime(); } PONTO; void PONTO::operator! () { printf("(%d,%d)", x,y); } void PONTO::operator= (int n) { x = n; y = n; } PONTO PONTO::operator+ (PONTO &v1) { PONTO temp; temp.x = v1.x + x; temp.y = v1.y + y; return temp; } |
PONTO PONTO::operator* (PONTO
&v1) { PONTO temp; temp.x = v1.x * x; temp.y = v1.y * y; return temp; } PONTO PONTO::operator- (PONTO &v1) { PONTO temp; temp.x = x - v1.x; temp.y = y - v1.y; return temp; } PONTO PONTO::operator-() { PONTO temp; temp.x = -x; temp.y = -y; return temp; } int main(int argc, char *argv[]) { PONTO a = {5,4}, b = {6,2}, c; cout << "Subtracao" << endl; c = b-a; //c.Imprime(); !c; cout << "Troca de Sinal" << endl; c = -c; c.Imprime(); cout << "Soma" << endl; c = a+b; c.Imprime(); cout << "Multiplicacao" << endl; c = a * a * a; c.Imprime(); cout << "Atribuicao" << endl; c = 3; c.Imprime(); return 0; } |
+ - * & ~ ! ++ -- -> ->*
+ - * / % ^ & | << >>
+= -= *= /= %= ^= &= |= <<= >>=
< <= > >= == != && ||
, [] ()
new new[] delete delete[]