C++ 和 Java 重载方法在链接时的毁坏(mangling)机制
为了确保重载的方法在重定向文件的符号表中有唯一的标识,将类的不同重载方法采用毁坏(mangling)机制编码为特殊符号名称保存在符号表内,这样在链接时就可以找到对应的重载方法。直觉可知重载的方法应根据参数列表来编码。
class good {
pubilc:
int val;
char name;
good(int v,char c):val(v),name(c) {};
good():val(0),name('a') {};
};
符号表中编码为:
good(int v,char c):val(v),name(c) {}; ---> good_4goodic 含义为: 类名 + 下划线 + 函数名长度 + 函数名 + 参数列表类型首字母
类似的 good():val(0),name('a') {}; ---> good_4good
在复原时只要映射回去就可以, 这一步叫做恢复(demangling)