#include<iostream>
using namespace std;
class A {
protected:
A() { cout << "Executing A()" << endl; }
public:
A(const A &) { cout << "Executing A(const A &)" << endl; }
~A() { cout << "Executing ~A()" << endl; }
};
class B : public A {
public:
B() { cout << "Executing B()" << endl; }
~B() { cout << "Executing ~B()" << endl; }
};
class C : public B {
public:
C() { cout << "Executing C()" << endl; }
~C() { cout << "Executing ~C()" << endl; }
};
void someFunc() {
A a = C();
}
int main() {
someFunc();
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7CnByb3RlY3RlZDoKICAgIEEoKSB7IGNvdXQgPDwgIkV4ZWN1dGluZyBBKCkiIDw8IGVuZGw7IH0KcHVibGljOgogICAgQShjb25zdCBBICYpIHsgY291dCA8PCAiRXhlY3V0aW5nIEEoY29uc3QgQSAmKSIgPDwgZW5kbDsgfQogICAgfkEoKSB7IGNvdXQgPDwgIkV4ZWN1dGluZyB+QSgpIiA8PCBlbmRsOyB9Cn07CgpjbGFzcyBCIDogcHVibGljIEEgewpwdWJsaWM6CiAgICBCKCkgeyBjb3V0IDw8ICJFeGVjdXRpbmcgQigpIiA8PCBlbmRsOyB9CiAgICB+QigpIHsgY291dCA8PCAiRXhlY3V0aW5nIH5CKCkiIDw8IGVuZGw7IH0KfTsKCmNsYXNzIEMgOiBwdWJsaWMgQiB7CnB1YmxpYzoKICAgIEMoKSB7IGNvdXQgPDwgIkV4ZWN1dGluZyBDKCkiIDw8IGVuZGw7IH0KICAgIH5DKCkgeyBjb3V0IDw8ICJFeGVjdXRpbmcgfkMoKSIgPDwgZW5kbDsgfQp9OwoKdm9pZCBzb21lRnVuYygpIHsKICAgIEEgYSA9IEMoKTsKfQoKaW50IG1haW4oKSB7CiAgICBzb21lRnVuYygpOwogICAgcmV0dXJuIDA7Cn0=