2016-07-05 10 views
1

Angenommen, ich habe eine Klasse A:Ist das definiert

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

Angenommen, ich habe das irgendwo tun:

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); 

Ist das, was ich hier mache Verhalten definiert, oder bin ich selbst in someway töten dass ich mir nicht bewusst bin?

+1

'reininterpret_cast' ist fast immer eine schlechte Idee. –

Antwort

2

Der angezeigte Code führt etwas aus, das memcpy() entspricht.

Als solche, this is undefined behavior. Klassen mit virtuellen Basisklassen sind nicht einfach kopierbar.