#include <iostream>
using namespace std;
class A {
public:
~A() {
cout << "A::~A" << endl;
Bar();
}
void Foo() {
Bar();
}
virtual void Bar() {
cout << "A::Bar" << endl;
}
};
class B : public A {
public:
~B() {
cout << "B::~B" << endl;
}
virtual void Bar() override {
cout << "B::Bar" << endl;
}
};
int main() {
B b;
b.Bar();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7CnB1YmxpYzoKCX5BKCkgewoJCWNvdXQgPDwgIkE6On5BIiA8PCBlbmRsOwoJCUJhcigpOwoJfQoJCgl2b2lkIEZvbygpIHsKCQlCYXIoKTsKCX0KCQoJdmlydHVhbCB2b2lkIEJhcigpIHsKCQljb3V0IDw8ICJBOjpCYXIiIDw8IGVuZGw7Cgl9Cn07CgpjbGFzcyBCIDogcHVibGljIEEgewpwdWJsaWM6Cgl+QigpIHsKCQljb3V0IDw8ICJCOjp+QiIgPDwgZW5kbDsKCX0KCgl2aXJ0dWFsIHZvaWQgQmFyKCkgb3ZlcnJpZGUgewoJCWNvdXQgPDwgIkI6OkJhciIgPDwgZW5kbDsKCX0KfTsKCmludCBtYWluKCkgewoJQiBiOwoJYi5CYXIoKTsKCXJldHVybiAwOwp9