只是一个好奇的问题! This似乎表明成员函数指针实际上是在使用编译器和编译选项之前的不同大小,并且this似乎暗示函数指针在模块之间传递得很好,那么成员函数指针呢?我的意思是,在模块之间传递数据时已经出现的所有麻烦,甚至尝试这个似乎都很愚蠢?或者涉及静态库的场景呢?如果使用了两个不同的编译器,我错误地认为任何涉及传递成员函数指针的场景都没有用处吗?
答案 0 :(得分:5)
如果使用两个不同的编译器,那么除非它们具有兼容的ABI(应用程序二进制接口),否则无论是否涉及成员函数指针,都无法合理地混合和匹配由它们创建的任何对象代码。
答案 1 :(得分:1)
成员函数指针与函数指针完全不同。它们不仅必须编码成员函数的函数指针,还必须编码成员函数的正确类型,以便运行时知道如何调用成员函数。这非常依赖于编译器如何实现类,并且实现在编译器供应商之间肯定会发生变化,并且通常会根据编译器的调用方式在编译器中进行更改。