0

根据我的经验,以下代码中的模式 2 几乎总是失败,而模式 1 总是成功。标准的哪一部分(如果有)可以保证这一点?

#include <iostream>
#include <cstdlib>

struct Data {
    int a;
    char b[5];
};

// Pattern 1
struct Base1 {
};

struct Derived1: Base1 {
    int a;
    char b[5];
};

static_assert(sizeof(Derived1)==sizeof(Data),  "Pattern 1 failed");

// Pattern 2
struct Base2 {
    int a;
    char b[5];
};

struct Derived2: Base2 {
};

static_assert(sizeof(Derived2)==sizeof(Data),  "Pattern 2 failed");

int main()
{
    std::cout << "Hello, world!" << std::endl;
}

可以 Derived1并且Data被认为具有共同开始序列的结构吗?

4

0 回答 0