Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态对象的名称管理 我在C++中碰到过。< /P> 我们可以创建一个C++工厂,它将返回我们感兴趣的类的对象。 此外,我们应该在工厂的文件范围内创建一个静态对象,以便使用dlsym()找到它。(文章建议静态对象不会被名称弄乱。)_C++_Static Members_Dynamic Linking_Name Mangling - Fatal编程技术网

静态对象的名称管理 我在C++中碰到过。< /P> 我们可以创建一个C++工厂,它将返回我们感兴趣的类的对象。 此外,我们应该在工厂的文件范围内创建一个静态对象,以便使用dlsym()找到它。(文章建议静态对象不会被名称弄乱。)

静态对象的名称管理 我在C++中碰到过。< /P> 我们可以创建一个C++工厂,它将返回我们感兴趣的类的对象。 此外,我们应该在工厂的文件范围内创建一个静态对象,以便使用dlsym()找到它。(文章建议静态对象不会被名称弄乱。),c++,static-members,dynamic-linking,name-mangling,C++,Static Members,Dynamic Linking,Name Mangling,为什么静态对象没有名称损坏?名称损坏是为了帮助解决重载函数名而发明的。您可以使用相同的名称定义多个函数,但仅在计数和参数类型上有所不同。Name mangling允许链接器将此类函数解析到代码中的正确位置 与函数名不同,全局命名空间中静态对象的名称不能重载,因此无需对其进行修改。全局名称空间之外的对象的名称实际上已损坏。由于名称空间的原因,对象名称可以而且实际上已损坏。但是,问题是关于文件范围(即全局名称空间)中的“静态”对象,在这种情况下,损坏很可能是不可操作的。@MSalters非常感谢您的

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

名称损坏是为了帮助解决重载函数名而发明的。您可以使用相同的名称定义多个函数,但仅在计数和参数类型上有所不同。Name mangling允许链接器将此类函数解析到代码中的正确位置


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

由于名称空间的原因,对象名称可以而且实际上已损坏。但是,问题是关于文件范围(即全局名称空间)中的“静态”对象,在这种情况下,损坏很可能是不可操作的。@MSalters非常感谢您的宝贵意见!我修正了答案,以澄清只有全局名称空间中的对象名称才不会被损坏。