Hola a todos tengos unas dudas con C++ que nadie me respondio hasta ahora( (amigos que sabian c++ pero que no me respondieron bien,mails a profesores que no me constestaron ....
) y quisiera que me la respondan
1)Sobrecarga << y amigas¿Por que para poder utilizar la sobrecarga de operadores << y << debo usar funciones amigas y no puedo usar algo como esto:
ostream Objeto::operator << (Objeto const & cobjeto)
{
ostream *salida;
*salida<<"Info: "<<cobjeto.inf<<" Info2: "<<cobjeto.inf<<endl;
return *salida;
}
?
Se que las funciones amigas tienen un pleno "alcance" sobre las variables privadas de la clase pero por que DEBEN ser amigas
y no una funcion como cualquier otra?
2)Operator =Objeto operator= (Objeto const &)
por que tengo que devolver un objeto Objeto si
Objeto Objeto::operator =(Objeto const &objeto1)
{
this->info=objeto1.info;
this->info2=objeto1.info2;
return *this;
}
estoy copiando la informacion en this ...?¿No deberia ir un void?
Nota:
Note que si se realiza objeto1=obeto2 declarar void operator =(Objeto const &) es correcto pero no si lo que deseo hacer es objeto1=objeto2=objeto3
en el ultimo caso funciona poniendo Objeto operator =(Objeto const &objeto1) pero no entiendo el por que de esto
3)Dudas con & operatorfriend ostream &operator << (ostream &,Objeto const &);
Por que operator lleva un 'Et' adelante??