【发布时间】:2015-04-12 03:04:50
【问题描述】:
有趣的是,不久前我回答了一个关于获取 C++ 构造函数的地址的问题,说它无法完成,所以改用完美转发。但是,就使用 Microsoft 的 Detour 库进行迂回而言,这不是一种选择。 需要地址才能绕过任何呼叫。所以现在我要问一个问题,如果没有构造函数的地址,是否可以绕道而行?如果有,怎么做?
【问题讨论】:
-
构造函数有一个内存地址(它毕竟是可执行代码,所以它必须驻留在内存中的某处)。您只是不能使用
&运算符来获取该地址(语言标准禁止这样做)。但是,如果您知道您的编译器如何在内存中布置类的结构,您可能可以通过“创造性”的方式获得构造函数的地址。但我不建议这样做。 -
好吧,@RemyLebeau,似乎 creative 必须是要走的路。我知道这肯定不会是可移植的,而且我也不希望它是可移植的。只要它在 MS C++ 编译器下工作,我就会很高兴。