next up previous contents
Next: Opérateur () appel de Up: Surcharges d'opérateurs Previous: Opérateur = d'affectation

Opérateur indice

class chaine{
    int lg;
    char *buf;
    //...
public:
    //...
    char &operator[](int i);
    char operator[](int i)const;
};  
char &chaine::operator[](int i){
    assert ( i < lg );
    return(buf[i]);
}   
char chaine::operator[](int i)const{
    assert ( i < lg );
    return(buf[i]);
}
//...
void f(){
    chaine ch1;
    const chaine ch2="abcdef"
    ch1[1]=ch2[1];
    //...
}

Remarquons l'utilité des deux surcharges pour [], l'une d'entre elle retourne une référence sur un élément du ``tableau'', elle peut donc se trouver en membre gauche d'une affectation, mais par contre cette surcharge ne pourra être utilisé pour un objet constant d'où la nécessité de la deuxième.

L'opérateur [] ne peut être statique mais peut s'hériter.




Mon Oct 20 14:02:48 MET 1997