#include <iostream>
using namespace std;
class A
{
public:
A() { cout << "consta" << endl; }
A(const A& aa) { cout << "copyconsta" << endl; }
virtual void foo() { cout << "A" << endl; }
};
class B : public A
{
public:
B() { cout << "constb" << endl; }
B(const B& bb) { cout << "copyconstb" << endl; }
virtual void foo() { cout << "B" << endl; }
};
int main() {
A a;
B b;
a.foo();
b.foo();
((A)b).foo();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQQp7CnB1YmxpYzoKCUEoKSB7IGNvdXQgPDwgImNvbnN0YSIgPDwgZW5kbDsgfQoJQShjb25zdCBBJiBhYSkgeyBjb3V0IDw8ICJjb3B5Y29uc3RhIiA8PCBlbmRsOyB9Cgl2aXJ0dWFsIHZvaWQgZm9vKCkgeyBjb3V0IDw8ICJBIiA8PCBlbmRsOyB9Cn07CgpjbGFzcyBCIDogcHVibGljIEEKewpwdWJsaWM6CglCKCkgeyBjb3V0IDw8ICJjb25zdGIiIDw8IGVuZGw7IH0KCUIoY29uc3QgQiYgYmIpIHsgY291dCA8PCAiY29weWNvbnN0YiIgPDwgZW5kbDsgfQoJdmlydHVhbCB2b2lkIGZvbygpIHsgY291dCA8PCAiQiIgPDwgZW5kbDsgfQp9OwoKaW50IG1haW4oKSB7CglBIGE7CglCIGI7CglhLmZvbygpOwoJYi5mb28oKTsKCQoJKChBKWIpLmZvbygpOwoJCglyZXR1cm4gMDsKfQ==