// opsobrecar.cpp - Operadores sobrecargados
#include <iostream>

// Estructura de un número complejo
struct complejo
{
  double real, imag;
};

// Suma de números complejos
complejo operator+( complejo x, complejo y )
{
  complejo temp;
  temp.real = x.real + y.real; // parte real
  temp.imag = x.imag + y.imag; // parte imaginaria
  return temp;
}

// Visualizar un número complejo
void visualizar( const complejo &z )
{
  printf("(%g,%g)\n", z.real, z.imag);
}

int main()
{
  complejo a = { 1.0, 2.0 }, b = { 1.5, -1.5 }, c;

  // Sumar los complejos a y b. Forma abreviada.
  c = a + b;
  visualizar(c);

  // Sumar los complejos a y b. Llamada explícita.
  c = operator+(a, b);
  visualizar(c);
}

