AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Off-Topic / Chat General (https://forums.alliedmods.net/forumdisplay.php?f=136)
-   -   Sobrecarga de operadores C++ (https://forums.alliedmods.net/showthread.php?t=218258)

rak 06-13-2013 18:47

Sobrecarga de operadores C++
 
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 iElementoint iValor);
    
    
// Retorna el valor en un elemento determinado del array
    
    
bool LeerValor(int iElementoint 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
    
    
intoperator[](int iElemento);

    
//.... 

la función completa es asi

PHP Code:

int& Array::operator[] (int iElemento)
{
    if(
iElemento >= && 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 :3

Javivi 06-24-2013 17:58

Re: Sobrecarga de operadores C++
 
rak, la solución a tu duda está aquí:
int& Array::operator[] (int iElemento)

rak 06-29-2013 12:23

Re: Sobrecarga de operadores C++
 
gracias javivi; no lo había notado :3


All times are GMT -4. The time now is 18:24.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.