Tiene sentido si se toma "Foo const& f" como referencia a Foo constante, all llamar a algun metodo de f, es posible que este modifique el objeto.
Entonces, "const Foo& f" es lo mismo que "Foo const& f"?
Hay alguna manera de hacer "constante referencia a Foo" y no "referencia a Foo constante"?
Me refiero a :
Código
void f(foo "referencia constante a" f){ f = foo(); //error, f referenciaria otro objeto f.set(valor); //ok, f sigue referenciando a f pero con un miembro cambiado de valor. }
Es decir, que se pueda cambiar los miembros de la referencia, pero no la referencia.
PD, creo que correctamente seria asi el la sobrecarga de +?
Código
Foo operator+(const Foo& f) { Foo b; b.bar_ = this->bar_ + f.bar_; return b; }
Y tambien, + tendria que devolver objeto nuevo mientras que += referencia al objeto?
Código
Foo operator+(const Foo& f); Foo& operator+=(Foo const& f);
Saludos y Gracias.