ce code Je prévu d'imprimer SAME 1 'et 'SAME2', mais il imprime seulement 'Same1':typeid pour les types polymorphes
#include <iostream>
#include <typeinfo>
using namespace std;
struct C{virtual ~C(){}};
struct D : C{};
int main(){
D d;
C c, &cr1 = d;
if(typeid(cr1) == typeid(D)) cout << "Same1";
if(typeid(&cr1) == typeid(D*)) cout << "Same2";
}
deux § 5.2.8/2 et § 5.3. 1/3 semblent me suggérer que 'Same2' devrait être imprimé.
Quoi et où est la prise?
Voulez-vous dire 'c c, * cr1 = & d'? –
@dark_charlie: C'est simplement en déplaçant simplement l'adresse-de l'opérateur de deux lignes vers le haut. Vous obtiendrez le même résultat, même si vous avez écrit 'typeid ((C *) & d)'. – MSalters
@MSalters: Ah, nvm moi, je ne peux pas lire. –