关于POD的许多问题;但是所有问题都涉及完整对象复制。我可以在类的普通旧数据部分上应用相同的概念吗?例:
struct Parent1
{
int x;
float y;
};
struct Parent2
{
int k;
float l;
};
struct NotPod : public Parent1, public Parent2
{
char z;
short w;
};
NotPod a, b;
void func()
{
a.z = '4';
a.w = 345;
memcpy((char*)&b.z, (char*)&a.z, (char*)(&a.w)-(&a.z) + sizeof(a.w));
}
我问的是旧的C++(不是C++ 11)。
最佳答案
据您的示例代码了解,您的问题与POD无关。您需要保证大多数派生类的成员都是聚合成员,并且它们具有连续的内存布局。
参见9.2.12(ISO 14882:2003)
简单地说,不要在集合序列之间放置public
/ protected
/ private
访问说明符,这样您就可以得到保证。
关于c++ - 部分原始数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15463065/