|
1
|
| Top-Master OMG Ponies · 技术社区 · 1 年前 |
|
|
1
3
C++标准中没有非静态成员函数的地址概念。不可能获得这样一个函数的地址(在编译代码中的指令/符号地址的意义上)。
但是,指向成员的指针确实存在,并且
如何实现这一点取决于编译器。例如在 Itanium C++ ABI 对于非虚拟非静态成员函数,函数指针与对象指针调整一起存储,我认为在基类对象偏移为零的情况下,取消重复函数通常不允许区分指针,因此这不是允许的优化。(至少假设该类具有外部链接。否则,我可以看到编译器静态地推理哪些地址被占用。)如果偏移量为非零,那么对象指针调整就可能不同。我需要更详细地考虑这个问题。 据我所知,MSVC的成员指针实现不符合标准,所以我不知道它在那里会如何表现。 然而,编译器足够聪明,例如,可以将具有相同主体的函数之一简化为跳转到另一个,以节省重复的指令。这仍然为所发射的函数提供了唯一的符号地址。
我什么都不能说
|
|
|
Wolfspirit · 你如何确定一个时间点是否在一个时间段内? 1 年前 |
|
|
h-swell · QT——如何使用布局类? 1 年前 |
|
|
LeftFrog · Qt中macOS上的按钮颜色不变 1 年前 |
|
|
Bobby · Qt是否与RAII设计模式不兼容? 1 年前 |
|
|
Harvey · 如何更改Qt Creator配置项目的默认套件? 1 年前 |