#include <iostream>
using std::cout;
using std::endl;
class A {
public:
int i;
A(int i_) : i(i_) {
cout << "A(): " << i << endl;
}
A(const A& a_) : i(a_.i) {
cout << "A(const A&): " << i << endl;
}
~A() {
cout << "~A(): " << i << endl;
}
};
class B {
public:
A a;
int b;
B(const A& a_) : a(a_) {
cout << "B(): " << a.i << endl;
}
~B() {
cout << "~B(): " << a.i << endl;
}
};
int main(void) {
for(int c = 0; c < 3; ++c) {
A a(c+1);
B b(a);
cout << b.a.i << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OmVuZGw7CgpjbGFzcyBBIHsKcHVibGljOgogIGludCBpOwogIEEoaW50IGlfKSA6IGkoaV8pIHsKICAgIGNvdXQgPDwgIkEoKTogIiA8PCBpIDw8IGVuZGw7CiAgfQogIEEoY29uc3QgQSYgYV8pIDogaShhXy5pKSB7CiAgCWNvdXQgPDwgIkEoY29uc3QgQSYpOiAiIDw8IGkgPDwgZW5kbDsKICB9CiAgfkEoKSB7CiAgICBjb3V0IDw8ICJ+QSgpOiAiIDw8IGkgPDwgZW5kbDsKICB9Cn07CgpjbGFzcyBCIHsKcHVibGljOgogIEEgYTsKICBpbnQgYjsKICBCKGNvbnN0IEEmIGFfKSA6IGEoYV8pIHsKICAgIGNvdXQgPDwgIkIoKTogIiA8PCBhLmkgPDwgZW5kbDsKICB9CiAgfkIoKSB7CiAgICBjb3V0IDw8ICJ+QigpOiAiIDw8IGEuaSA8PCBlbmRsOwogIH0KfTsKCmludCBtYWluKHZvaWQpIHsKICBmb3IoaW50IGMgPSAwOyBjIDwgMzsgKytjKSB7CiAgICBBIGEoYysxKTsKICAgIEIgYihhKTsKICAgIGNvdXQgPDwgYi5hLmkgPDwgZW5kbDsKICB9CiAgcmV0dXJuIDA7Cn0=