Sobrecargando operadores unarios

Veamos un ejemplo:

#include <iostream.h>

class Burrito {
  private:
    int amtbeef, amtbean;
  public:
    Burrito(int beef, int bean) {
     amtbeef = beef;
     amtbean = bean;
    }
    Burrito operator ++() {
     amtbeef++; amtbean++;
     return Burrito(amtbeef, amtbean);
    }
    int getBeef() { return amtbeef; }
};
main(){
  Burrito b1(5,10);

  cout << "Burrito #1 has" << b1.getBeef() << "ounces of beef." << '\n';
  b1++;
  cout << "Now Burrito #1 has" << b1.getBeef() << "ounces of beef."<< '\n';
}

Vemos que sobrecargar un operador unario es muy similar a la forma en que se hace para uno binario. De hecho, la única diferencia real es que ahora no se pasa ningún parámetro al operador, ya que ahora sólo hay un operando, que es el objeto cuyo operador se usa.
Hay si embargo una pequeña cuestión que debe tenerse en cuenta cuando se sobrecargan los operadores ++ y --. Sabemos que b = ++a; es diferente a b=a++;. La primera expresión equivale a a = a +1; b = a;, mientras que la segunda es : b = a; a = a +1;. Sin embargo, cuando se sobrecarga el operador ++ (o el --) no se puede hacer distinción entre estas dos situaciones. Los dos usos del operador tienen el mismo efecto.   

Free Web Hosting