首页 > 后端开发 > C++ > 正文

为什么 C 构造函数有两个符号?

Linda Hamilton
发布: 2024-11-24 02:41:09
原创
264 人浏览过

Why Are There Two Symbols for C   Constructors?

C 构造函数的双重符号

Itanium C ABI 指定构造函数的重整名称包含有关其类型和参数的信息。因此,在库中观察到的两个构造函数条目源于它们不同的构造函数类型:

  • 完整对象构造函数(C1):此构造函数完全初始化对象,包括任何虚拟基类.
  • 基础对象构造函数 (C2): 此构造函数初始化对象本身以及数据成员和非虚拟基类。

双重符号和多重定义错误

尽管有双重条目,但不会因使用而出现符号定义冲突C1 和 C2 后缀。 ABI 确保损坏的名称是唯一的,为以不同方式处理这两种构造函数类型提供编译器支持。

其他详细信息

  • 在没有虚拟基的情况下类,完整的和基础对象构造函数是相同的,并且在充分优化的情况下符号可以别名为相同的代码。
  • 需要双构造函数符号主要是由对多态性的支持驱动的,其中不同的对象可能继承不同的基类,需要专门的初始化。
  • 此行为曾经显示在 c filt 输出中,但不再包含在内。

以上是为什么 C 构造函数有两个符号?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板