"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment obtenir l'équivalent C++ de l'opérateur \"instanceof\" de Java ?

Comment obtenir l'équivalent C++ de l'opérateur \"instanceof\" de Java ?

Publié le 2024-11-17
Parcourir:707

How to Achieve the C   Equivalent of Java\'s \

Comment obtenir l'équivalent C de l'instance de Java

En Java, l'opérateur "instanceof" vous permet de déterminer si un objet appartient à un classe ou interface spécifique. En C , il existe plusieurs méthodes pour obtenir cette fonctionnalité.

Diffusion dynamique avec RTTI

Une approche consiste à utiliser la diffusion dynamique avec les informations de type d'exécution (RTTI) activées. Cela nécessite que vous incluiez les en-têtes nécessaires :

#include 
#include 

Et puis vous pouvez effectuer une diffusion dynamique en utilisant :

if(NewType* v = dynamic_cast(old)) {
   // old was safely casted to NewType
   v->doSomething();
}

Notez que cette approche nécessite que la prise en charge RTTI soit activée dans votre compilateur.

Fonctions virtuelles

Une autre méthode consiste à utiliser des fonctions virtuelles. Vous pouvez définir une fonction virtuelle dans la classe de base et la remplacer dans les classes dérivées. Ensuite, vous pouvez vérifier le type dynamique d'un objet en appelant sa fonction virtuelle :

class Base {
public:
    virtual void doSomething() {}
};

class Derived : public Base {
public:
    void doSomething() override {}
};

...

if(auto* derived = dynamic_cast(old)) {
    derived->doSomething();
}

Commutateur de type

Enfin, vous pouvez utiliser un commutateur de type pour déterminer le type dynamique d'un objet. Cette approche s'appuie sur la classe type_info :

if(old.IsSameAs(typeid(NewType))) {
    // old was safely casted to NewType
    NewType* v = static_cast(old);
    v->doSomething();
}

Considérations

Bien que ces méthodes offrent des fonctionnalités similaires à l'opérateur "instanceof" de Java, il est essentiel de se rappeler que la conversion dynamique et la vérification de type peuvent entraîner des pénalités de performances. Il est recommandé d'envisager d'utiliser des approches alternatives telles que des fonctions virtuelles ou des commutateurs de type pour de meilleures performances dans les applications critiques.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3