Bonjour,
Voici un petit code d'exemple dont je ne comprends pas l'exécution :
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.
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 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
Partager