Itanium C ABI 指定函数名称的修饰以包含有关其参数的信息和功能。构造函数名称遵循特定的模式:
_Z | N | <class_name> | <ctor-type> | E | <parameters> prefix | nested | `Thing` | Constructor | end nested | parameters: `int`
由于 GCC 发出的构造函数类型不同,库中的构造函数符号出现两次:
即使相关类没有虚拟基类,GCC 仍然会发出两个构造函数作为支持的副产品多态性。如果不涉及多态性,GCC 可以通过仅发出一个构造函数来进行优化。
这两个构造函数由于其损坏名称中的 C1 和 C2 指示符而具有不同的名称,这表明他们执行的不同类型的构造。
构造函数符号的双重发射是结果的 Itanium C ABI 和对多态性的支持,但当不使用多态性时,它可以被 GCC 优化掉。
以上是为什么 Itanium C ABI 发出双构造函数符号?的详细内容。更多信息请关注PHP中文网其他相关文章!