If you have a __clrcall virtual function, the vtable will be per application domain (appdomain). If you create an object in one appdomain, you can only call the virtual function from within that appdomain. All functions defined in /clr:pure compilands use the __clrcall calling convention. Therefore, all vtables defined in /clr:pure compilands are per appdomain. In mixed mode (/clr) you will have per process vtables if your type has no __clrcall virtual functions.
For more information, see