lang:cpp:motscles
Ceci est une ancienne révision du document !
Table des matières
Prototypes correspondant à un même appel
Soit les prototypes
void fn (int i, int j); void fn (int i, int ...);
Dans le cas de l'appel à la fonction fn (1, 2), la fonction ayant le prototype exact sera appelé (soit void fn (int i, int j))
Mots clés
typeid
typeid marche avec l'héritage si la classe est polymorphique (au moins une méthode est virtuelle) et ne marche pas avec les pointeurs (il faut utiliser une référence à la place)
#include <iostream> #include <typeinfo> #include <type_traits> class A { public: virtual bool test(A & aa) { return typeid(aa) == typeid(*this); } ~A() { static_assert(std::is_polymorphic<A>::value, "typeid ne marchera avec les enfants que si la classe A est polymorphique."); } }; class B : public A { }; class C : public A { }; int main() { B b; C c; if (b.test(c)) std::cout << "Identique" << std::endl; else std::cout << "Pas identique" << std::endl; return 0; }
Résultat :
Pas identique
Ensuring a template class isn't polymorphic? Archive du 30/12/2016 le 18/12/2019
typeid for polymorphic pointers? Archive du 09/06/2013 le 18/12/2019
lang/cpp/motscles.1576705474.txt.gz · Dernière modification : de root
