2016-07-05 1 views
1

Supposons que j'ai une classe A:Est-ce défini

class A : virtual SomeOtherClass{ 
    //Stuff here 
}; 

Supposons que je le faire quelque part:

A thing; 
alignas(A) uint8_t arr[sizeof(A)]; 
for (int x = 0; x < sizeof(A); x++) 
{ 
    //Copy into array 
    arr[x] = reinterpret_cast<uint8_t*>(&A)[x]; 
} 

A* otherThing = reinterpret_cast<A*>(arr); 

Est-ce que je fais le comportement défini ici, ou que je me tue à someway que je ne suis pas au courant?

+1

'reinterpret_cast' est presque toujours une mauvaise idée. –

Répondre

2

Le code indiqué exécute quelque chose d'équivalent à memcpy().

En tant que tel, this is undefined behavior. Les classes avec des classes de base virtuelles ne sont pas facilement copiables.