Capítulo 21, Apartado 21.3.4, página 777-779
// sobrecarga de los operadores incremento y decremento
// postfijo y prefijo
#include <iostream>
using namespace std;
class Punto {
public :
// ...
Punto& operator ++(); // prefija
Punto operator ++(int); // postfija
Punto& operator –-();
Punto operator ––(int);
//clase Punto
};
// ...
// operador de incremento con prefijo (++p)
inline Punto& Punto::operator ++()
{
x += 1.0;
y += 1.0;
z += 1.0;
return *this;
}
// operador de incremento con postfijo (p++)
inline Punto Punto::operator ++ (int)
{
x += 1.0;
y += 1.0;
z += 1.0;
return Punto (x - 1.0, y - 1.0, z - 1.0);
}
// operador de decremento con prefijo (--p)
inline Punto& Punto::operator ––()
{
x -= 1.0;
y -= 1.0;
z -= 1.0;
return *this;
}
// operador de decremento con postfijo (p--)
inline Punto Punto::operator --(int)
{
x -= 1.0;
y -= 1.0;
z -= 1.0;
return Punto (x + 1.0, y + 1.0, z + 1.0);
}
// programa principal
int main()
{
Punto p(5.0, 7.0. 8.0);
Punto q(1.0, 2.0, 3.0);
Punto r--;
// presentación de p
cout << " p ( " << p.X() << " , " << p.Y() << " , "
<< p.Z() << " ) " << endl;
r = ++p;
cout << "++p (" << r.X() << " , " << r.Y()
<< "," << r.Z() << " ) " << endl;
// presentación de q
cout << " q(" << q.X() << " , " << q.Y()
<< " , " << q.Z() << " ) " << endl;
r = q++;
cout << "q++(" << r.X() << " , " << r.Y()
<< " , " << r.Z() << " ) " << endl;
}
Tags: sobrecarga, página, capítulo, apartado, 777779