Buenas, ando leyendo un poco de C++ y entre en la parte de sobrecarga y en el libro que tengo hablaba de sobrecarga de operadores; antes de ver sobrecarga hablaba sobre la herencia que por lo que lei todo bien;
muestro una clase base la cual después salían otras 2 subclases;
PHP Code:
class Array
{
// Cantidad de elementos actual del array
int m_iCantElementos;
// Puntero a array de numeros enteros
int * m_piArray;
public:
Array(int iCantidadElementos);
~Array(void);
// Fijar tamaño del array
bool FijarTam(int iCantidadElementos);
// Leer el tamaño del array
int LeerTam() const;
//Fijar el valor en un elemento determinado del array
bool FijarValor(int iElemento, int iValor);
// Retorna el valor en un elemento determinado del array
bool LeerValor(int iElemento, int & iValor) const;
// Limpiar el array con el valor pasado como paramentro
void Limpiar(int iValor);
};
hasta ahí todo bien, después de que empezamos a ver el tema de sobrecarga de operadores vi algo que me dejo medio en duda; dice que se le puede agregar a la clase anterior esto
PHP Code:
//....
public:
//....
// Leer un valor del array
int& operator[](int iElemento);
//....
la función completa es asi
PHP Code:
int& Array::operator[] (int iElemento)
{
if(iElemento >= 0 && iElemento < m_iCantElementos)
return m_piArray[iElemento];
else
return -1;
}
y después da este ejemplo
Code:
// Creo el array con 10 elementos
Array arr(10);
// Fijar el valor 5 en la cuarta posicion
arr.FijarValor(3, 5);
// La linea anterior puede ser reescrita por:
arr[3] = 5;
int iValor;
// Antes leiamos un valor del siguiente modo
arr.LeerValor(3, iValor);
// Ahora lo podemos hacer:
iValor = arr[3]
lo remarcado es lo que me genera duda... la función solo devuelve el valor... pero asignarlo? puede ser que el ejemplo este mal o es algo que no entendí?
Gracias por leer
__________________