On ne peut pas surcharger les opérateur
à l'exterieur d'une classe, mais on peut à l'intérieur d'une classe par des méthodes d'objet
a = b a.operator = (b)a[b] a.operator[](b)a(b,c,d) a.operator()(b,c,d)a->b a.operator->bSi @ est un opérateur,
class A{
int t[10];
public:
int& operator[](int i){
if (i<0 || i>9){
fprintf(stderr, "erreur d'indice\n");
exit(1);
}
return.this->t[i];
}
}
int main(){
A obj;
obj[0] = 5; obj.operator[](0) = 5;
obj[1] = obj[0] * 3;
// obj[11] = 6; // erreur à l'execution
}