@
3dwelcome 谢谢你的方法
我在本地用 gdb 调试了一下,发现
https://godbolt.org/z/6q1GEeqzW 这个 demo 里面的构造就是调用的 ABI 标识符号是 _ZN1AC2Ev ( c++filt 后是 A::A()),根据 ABI (
https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling-special-ctor-dtor )的解释,应该是 “base object constructor”,和 goltbolt 的结果有些不一致,我猜测是平台的问题。
后面我在 goltbolt 中发现 Filter 选项会把 "Unused labels" 给过滤掉,取消过滤后找到了原因。
有一段:
.weak _ZN1AC1Ev
.set _ZN1AC1Ev,_ZN1AC2Ev
demangle 后是:
.weak A::A() [complete object constructor]
.set A::A() [complete object constructor],A::A() [base object constructor]
将 A::A() [complete object constructor] 指向 A::A() [base object constructor]。
在目前这种情况下,这两种 constructor 应该是相同的