例えばこれをソケット通信で送ったとして
char* p = (char*)new ImpA();
AbstractType type = A;

受け取った側が復元したいのです。
Abstract* restore(p, type);