I believe this strange stuff comes up due to Name Mangling it is also known as name decoration. Name Mangling is mechanism used by compilers to pass semantically relevant information from compilers to linkers.
This is how Wikipedia describes Name Mangling for Visual C++ series of compilers:
Visual C++ name mangling is a mangling (decoration) scheme used in Microsoft Visual C++ series of compilers. It provides a way of encoding name and additional information about a function, structure, class or another datatype in order to pass more semantic information from the Microsoft Visual C++ compiler to its linker. Visual Studio and the Windows SDK (which includes the command line compilers) come with the program undname which may be invoked to obtain the C-style function prototype encoded in a mangled name. The information below has been mostly reverse-engineered. There is no official documentation for the actual algorithm used.