123456789101112131415161718192021222324252627
class Derived; class Base { public: virtual Derived* clone() const { return new Derived; } }; class Derived : public Base{ public: Derived() {}; virtual Derived* clone() const { return new Derived(*this); } }; #include <iostream> int main() { Base ob; Derived od; return 0; }