#include <iostream>
#include <cstring>
class Base {
public:
virtual void f() { std::cout << "Base::" << i << std::endl; };
void clear() { memset(this, 0, sizeof(Base)); }
int i;
};
class Derive: public Base {
public:
void f() {
std::cout << "Derive::" << i << std::endl;
}
};
int main() {
Base* p = new Derive();
p->i = 2019;
p->clear();
p->f();
delete p;
return 0;
}