C++中名称篡改的目的是什么

What is the purpose of name mangling in C++?

本文关键字:是什么 C++      更新时间:2023-10-16

我在一篇文章中读到,编译器会更改(具有相同名称的(函数的名称(名称篡改(,以避免名称冲突。

考虑以下示例。

void fun(int x)
{
cout<<x<<endl;  
}
void fun(float x)
{
cout<<x<<endl;
}
int main()
{
fun(10);
fun(10.5f);
return 0;
}

上面是一个非常简单的函数重载示例。在这里,编译代码时,编译器将更改函数名,以便链接器可以在两个不同的调用之间进行链接。

问题:芒果需要什么

由于参数具有不同的数据类型,所以这可能足以链接到适当的函数。那么,编译器为什么要执行名称篡改呢?

链接器不知道重载(它必须是多语言通用的(。它所知道的只是需要解决的符号

编译器名称篡改为两个函数重载创建了两个不同的符号,允许链接器将它们解析为正确的函数。