Maison >Java >javaDidacticiel >Comment obtenir la fonctionnalité « instanceof » de Java en C : « dynamic_cast » et alternatives ?
Équivalent C à l'instance de Java : dynamic_cast et approches alternatives
L'opérateur instanceof de Java vous permet de vérifier si un objet est une instance d'un objet spécifique. classe ou ses sous-classes. En C , vous pouvez obtenir des fonctionnalités similaires en utilisant Dynamic_cast.
<code class="cpp">if (NewType* v = dynamic_cast<NewType*>(old)) { // Cast succeeded, old is a NewType object v->doSomething(); }</code>
Cette approche nécessite que les informations de type d'exécution (RTTI) soient activées dans votre compilateur. Cependant, Dynamic_cast peut avoir un coût en termes de performances.
Approches alternatives :
<code class="cpp">switch (old->getType()) { case BOX: // old is a Box object break; case SPECIAL_BOX: // old is a SpecialBox object break; }</code>
Cette approche ne nécessite pas de RTTI mais ne convient pas à l'héritage à plusieurs niveaux.
Remarque : Considérez la nécessité d'une vérification de type dynamique car elle peut indiquer des problèmes de conception. Des alternatives telles que les fonctions virtuelles ou l'approche enum peuvent offrir une meilleure conception et de meilleures performances dans de nombreux cas.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!