命名静态对象的名称

时间:2012-09-30 22:44:12

标签: c++ static-members dynamic-linking name-mangling

我在C ++中遇到this article on dynamic linking

我们可以创建一个C ++工厂,它将返回我们感兴趣的类的对象。 此外,我们应该在工厂的文件范围内创建一个静态对象,以便可以使用dlsym()找到它。 (文章建议静态对象不要被命名。)

为什么静态对象没有名称损坏?

1 个答案:

答案 0 :(得分:5)

名称修改是为了帮助解决重载的函数名而发明的。您可以使用相同的名称定义多个函数,仅在计数和参数类型方面有所不同。名称修改使链接器可以将这些函数解析为代码中的正确位置。

与函数名称不同,全局命名空间中的静态对象的名称不能重载,因此不需要对其进行重写。事实上,全局命名空间之外的对象名称已被修改。