#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