#include <iostream>
#include <memory>
class Base
{
public:
virtual ~Base() {}
virtual void print() const = 0; // Pure abstract function
};
class Derived : public Base
{
public:
virtual void print() const override { std::cout << "Derived\n"; }
};
int main()
{
std::unique_ptr<Base> base = std::make_unique<Derived>();
base->print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKY2xhc3MgQmFzZQp7CnB1YmxpYzoKICAgIHZpcnR1YWwgfkJhc2UoKSB7fQoKICAgIHZpcnR1YWwgdm9pZCBwcmludCgpIGNvbnN0ID0gMDsgLy8gUHVyZSBhYnN0cmFjdCBmdW5jdGlvbgp9OwoKY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlCnsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIHByaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBzdGQ6OmNvdXQgPDwgIkRlcml2ZWRcbiI7IH0KfTsKCmludCBtYWluKCkKewogICAgc3RkOjp1bmlxdWVfcHRyPEJhc2U+IGJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWQ+KCk7CiAgICBiYXNlLT5wcmludCgpOwoKICAgIHJldHVybiAwOwp9