![]() |
1
4
这只是编译器资源管理器如何呈现输出的问题(就像
GCC在同一地址为两个构造函数定义了符号,因为函数具有完全相同的行为。符号表:
通常,编译器无法优化两个函数以使其具有完全相同的地址,而是将其中一个相同的函数编译为一个跳转指令到另一个,但对于构造函数(和其他非静态(隐式对象)成员函数)来说,这是可以的,因为在C++中无法观察构造函数的地址。 在编译器资源管理器中,如果您查看的是汇编级别而不是反汇编的二进制文件,您还可以通过编译器窗口左侧的第三个图标禁用汇编指令的过滤。然后,您将看到导致所有这些符号在同一位置定义的指令。不幸的是,会有很多指令,所以读起来有点困难。在“编译为二进制对象”/“链接到二进制”模式下,这是不可能的。 |