关于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/

10-11 23:10
查看更多