#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cstring>

int dump(void *s, size_t size) {
    unsigned char *buf = (unsigned char*)s;
    for (size_t i=0; i<size; ++i) {
        std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)buf[i] << " ";
    }
    std::cout << std::endl;
    return 5;
}

struct Test {
    Test() : x(dump(this, sizeof(*this))) {
        std::cout << "In c'tor:            ";
        dump(this, sizeof(*this));
        memset(this, 0, sizeof(*this));
    }
    virtual ~Test() {
    }
    int x;
};

struct T : Test
{};

int main() {
    T *t = (T*)calloc(1, sizeof(T));
    std::cout << "Before construction: ";
    dump(t, sizeof(Test));
    new(t) T;
    std::cout << "After construction:  ";
    dump(t, sizeof(Test));
    return 0;
}