#include <iostream>
using namespace std;
struct A
{
int x;
A(int x) : x(x) {}
};
struct B : A
{
B() : A(7) {}
// int y; // if uncomment, program vouldn't compile
};
static_assert(sizeof (A) == sizeof (B), "B must have same size as A");
int main()
{
A *a = new B[4];
for (size_t q=0; q<4; ++q)
cout << q << ": " << a[q].x << endl;
delete [] a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBBCnsKICBpbnQgeDsKICBBKGludCB4KSA6IHgoeCkge30KfTsKCnN0cnVjdCBCIDogQQp7CiAgQigpIDogQSg3KSB7fQogIC8vIGludCB5OyAvLyBpZiB1bmNvbW1lbnQsIHByb2dyYW0gdm91bGRuJ3QgY29tcGlsZQp9OwoKc3RhdGljX2Fzc2VydChzaXplb2YgKEEpID09IHNpemVvZiAoQiksICJCIG11c3QgaGF2ZSBzYW1lIHNpemUgYXMgQSIpOwoKaW50IG1haW4oKQp7CiAgQSAqYSA9IG5ldyBCWzRdOwogIAogIGZvciAoc2l6ZV90IHE9MDsgcTw0OyArK3EpCiAgICBjb3V0IDw8IHEgPDwgIjogIiA8PCBhW3FdLnggPDwgZW5kbDsKICAKICBkZWxldGUgW10gYTsKICAKICByZXR1cm4gMDsKfQ==