#include <iostream>
struct B {
virtual void f() = 0;
virtual ~B() {}
};
struct D : B {
void f() { std::cout << "D.f\n"; }
};
struct DD : D {
};
int main() {
DD obj;
B *ptr = &obj;
ptr->f();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEIgewogICAgdmlydHVhbCB2b2lkIGYoKSA9IDA7CiAgICB2aXJ0dWFsIH5CKCkge30KfTsKCnN0cnVjdCBEIDogQiB7CiAgICB2b2lkIGYoKSB7IHN0ZDo6Y291dCA8PCAiRC5mXG4iOyB9Cn07CgpzdHJ1Y3QgREQgOiBEIHsKfTsKCmludCBtYWluKCkgewogICAgREQgb2JqOwogICAgQiAqcHRyID0gJm9iajsKICAgIHB0ci0+ZigpOwp9Cg==