Bonjour,

Voici un petit code d'exemple dont je ne comprends pas l'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
class myClass {
public :
  operator void*() const { return (void*)this;}
};
 
void main() {
 
  myClass myClass1;
  if ( myClass1 )
    int i = 0;
 
}
Si je trace ce code, alors l'exécution du test if ( myclass1 ) entraîne l'appelle de l'opérateur de transtypage (void*) de la classe myClass.
Si j'implémente myClass::operator bool() alors c'est l'opérateur de
transtypage (bool) de la classe myClass qui est appelé.

Quelqu'un pourrait m'expliquer pourquoi le compilateur génère un appel à l'opérateur de transtypage (void*) de la classe myClass si myClass::operator bool() n'existe pas ?

Merci pour votre aide.

Sylvain