这是定义的

Is this defined

本文关键字:定义      更新时间:2023-10-16

假设我有一个类A

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

假设我在某处做了这个:

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

在这里所做的是定义行为,还是我以某种我不知道的方式自杀?

显示的代码执行的内容等效于 memcpy() .

因此,这是未定义的行为。具有虚拟基类的类不是普通可复制的。