Bibliothèque C ++ Type_info - opérateur == Fonction

La description

Il renvoie si les types identifiés par deux objets type_info sont identiques.

Déclaration

Voici la déclaration pour std :: type_info :: operator ==

C ++ 98

bool operator== (const type_info& rhs) const;

C ++ 11

bool operator== (const type_info& rhs) const noexcept;

Paramètres

rhs - Il identifie le type d'objet.

Valeur de retour

Il renvoie si les types identifiés par deux objets type_info sont identiques.

Des exceptions

No-throw guarantee - cette fonction membre ne lève jamais d'exceptions.

Courses de données

L'objet locale est modifié.

Exemple

Dans l'exemple ci-dessous pour std :: type_info :: operator ==.

#include <iostream>
#include <typeinfo>

struct Base {};
struct Derived : Base {};
struct Poly_Base {virtual void Member(){}};
struct Poly_Derived: Poly_Base {};

typedef int my_int_type;

int main() {
   std::cout << std::boolalpha;

   std::cout << "int vs my_int_type: ";
   std::cout << ( typeid(int) == typeid(my_int_type) ) << '\n';

   std::cout << "Base vs Derived: ";
   std::cout << ( typeid(Base)==typeid(Derived) ) << '\n';

   Base* pbase = new Derived;

   std::cout << "Base vs *pbase: ";
   std::cout << ( typeid(Base)==typeid(*pbase) ) << '\n';

   Poly_Base* ppolybase = new Poly_Derived;

   std::cout << "Poly_Base vs *ppolybase: ";
   std::cout << ( typeid(Poly_Base)==typeid(*ppolybase) ) << '\n';

   return 0;
}

La sortie devrait être comme ça -

int vs my_int_type: true
Base vs Derived: false
Base vs *pbase: true
Poly_Base vs *ppolybase: false