#include <iostream>
#include <iostream>
using namespace std;
class A {
public:
A() { cout << "A ctor" << endl; }
//A(const A& a) { cout << "A copy ctor" << endl; }
virtual ~A() { cout << "A dtor" << endl; }
virtual void foo() { cout << "A foo()" << endl; }
};
class B : public A {
public:
B() { cout << "B ctor" << endl; }
virtual ~B() { cout << "B dtor" << endl; }
virtual void foo() { cout << "B foo()" << endl; }
protected:
A mInstanceOfA; // don't forget about me!
};
A foo(A& input) {
input.foo();
return input;
}
int main() {
B myB;
A myA;
myA = foo(myB);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIEEgewpwdWJsaWM6CkEoKSB7IGNvdXQgPDwgIkEgY3RvciIgPDwgZW5kbDsgfQovL0EoY29uc3QgQSYgYSkgeyBjb3V0IDw8ICJBIGNvcHkgY3RvciIgPDwgZW5kbDsgfQp2aXJ0dWFsIH5BKCkgeyBjb3V0IDw8ICJBIGR0b3IiIDw8IGVuZGw7IH0KdmlydHVhbCB2b2lkIGZvbygpIHsgY291dCA8PCAiQSBmb28oKSIgPDwgZW5kbDsgfQp9OwpjbGFzcyBCIDogcHVibGljIEEgewpwdWJsaWM6CkIoKSB7IGNvdXQgPDwgIkIgY3RvciIgPDwgZW5kbDsgfQp2aXJ0dWFsIH5CKCkgeyBjb3V0IDw8ICJCIGR0b3IiIDw8IGVuZGw7IH0KdmlydHVhbCB2b2lkIGZvbygpIHsgY291dCA8PCAiQiBmb28oKSIgPDwgZW5kbDsgfQpwcm90ZWN0ZWQ6CkEgbUluc3RhbmNlT2ZBOyAvLyBkb24ndCBmb3JnZXQgYWJvdXQgbWUhCn07CkEgZm9vKEEmIGlucHV0KSB7CmlucHV0LmZvbygpOwpyZXR1cm4gaW5wdXQ7Cn0KaW50IG1haW4oKSB7CkIgbXlCOwpBIG15QTsKbXlBID0gZm9vKG15Qik7Cn0=