next up previous contents
Next: Fonction de conversion Up: Conversions Previous: Conversions

Conversions par constructeur

Les constructeurs servent aussi bien entendu pour les conversions:

class X{
  // ...
public:
  X(int);
  X(const char*);
};
void f(X);
//...
void g(){
  X a=1;           // a=X::X(1)
  X b="ufr";       // b=X::X("ufr");
  f(2);            // f(X::X(2))
  a=2;             // a=X::X(2)
}

En particulier il ne faut pas oublier que la conversion concernera tous les opérateurs (en particulier l'affectation).

Mais attention, les conversions définies par l'utilisateur ne peuvent se faire qu'à un seul niveau :

class Y{
  public:
    Y(const X);
};
void g(Y);
//...
void essai(){
  Y y=1;        // illegal 
  Y y=(X)1;
  g(1);         // illegal
}
Les règles de conversion seront étudiées avec plus de détail dans le chapitre sur la surcharge.




Mon Oct 20 14:02:48 MET 1997