C++ Reconstruction
在C++中, 当new
操作符接受一个指针作为参数时, 表示在该指针所对应的地址上进行构建.
new (ptr) Type(args...);
利用这一点, 我们可以在类的成员函数或者构造函数里对类进行重构:
class Base {
public:
Base() {
printf("default constructor\n");
}
void reconstruct() {
new (this) Base();
}
};
WELCOME TO THE MACHINE