void __cdecl abc<def<int>,void*>::xyz(void);becomes this function call:
xyz@?$abc@V?$def@H@@PAX@@You need to do this because processors and i386 assembly don't really have a concept of objects. So this function name contains all information needed by the compiler to figure out the original function signature! Java actually does something similar if you've ever coded JNI methods. The "this" pointer, which is a pointer to the struct of member variables (plus other bookkeeping like rtti and the virtual function table), usually comes either as the first parameter, or more commonly in a machine register.
You are not logged in, either login or create an account to post comments
C/C++ is more complicated since the compiler generates intermediate object files (.o) and then the linker links them into dll's or exe's.
posted by smackfu at 11:44 AM on January 11