#include <iostream>
using namespace std;
class A {
public:
int test;
A(string text = "Constructor A") { cout << text << endl; }
};
class B: public A {
public:
B(): A("A called from B") { cout << "Constructor B" << endl; }
};
class C : virtual public A {
public:
C() : A("A called from C") { cout << "Constructor C" << endl; }
};
class D : public B, public C {
public:
D() { cout << "Constructor D" << endl; }
};
int main() {
D d;
cout << &d.B::test <<endl;
cout << &d.C::test <<endl;
//cout <<&d.test<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7CnB1YmxpYzogCglpbnQgdGVzdDsgCiAgICBBKHN0cmluZyB0ZXh0ID0gIkNvbnN0cnVjdG9yIEEiKSB7IGNvdXQgPDwgdGV4dCA8PCBlbmRsOyB9Cn07CgpjbGFzcyBCOiAgcHVibGljIEEgewpwdWJsaWM6CiAgICBCKCk6IEEoIkEgY2FsbGVkIGZyb20gQiIpIHsgY291dCA8PCAiQ29uc3RydWN0b3IgQiIgPDwgZW5kbDsgfQp9OwoKY2xhc3MgQyA6IHZpcnR1YWwgcHVibGljIEEgewpwdWJsaWM6CiAgICBDKCkgOiBBKCJBIGNhbGxlZCBmcm9tIEMiKSB7IGNvdXQgPDwgIkNvbnN0cnVjdG9yIEMiIDw8IGVuZGw7IH0KfTsKCmNsYXNzIEQgOiAgcHVibGljIEIsICBwdWJsaWMgQyB7CnB1YmxpYzogCiAgICBEKCkgeyBjb3V0IDw8ICJDb25zdHJ1Y3RvciBEIiA8PCBlbmRsOyB9Cn07CgppbnQgbWFpbigpIHsKCUQgZDsKCWNvdXQgPDwgJmQuQjo6dGVzdCA8PGVuZGw7IAoJY291dCA8PCAmZC5DOjp0ZXN0IDw8ZW5kbDsgCgkvL2NvdXQgPDwmZC50ZXN0PDxlbmRsOyAKCXJldHVybiAwOwp9