成员函数指针-仅地址?

| http://www.codeproject.com/KB/cpp/fastdelegate2.aspx 在上一篇文章的引言的第二段中,它说:“这是由于需要昂贵的堆内存分配来存储成员函数和在其上进行成员函数调用的绑定对象。”不明白吗?它实际上是否必须复制并存储对象和成员函数?它不只存储成员函数的地址吗?     
已邀请:
Boost.Function比原始函数指针更通用,更强大:它们可以存储可以使用特定签名调用的任何内容。但是,与这种灵活性相关联的存储和运行时间会产生成本。 Boost.Function文档的Miscellaneous Notes部分讨论了更多有关此内容,但总结如下: Boost.Function对象在内部存储一个成员函数指针和两个数据指针。 如果存储的函子大于特定大小,则可能需要堆分配。 调用Boost.Function对象将导致通过函数指针进行一次或两次调用,具体取决于存储的内容。 说了这么多,我已经广泛使用了Boost.Function,从来没有遇到过在分析时实际显示其存储或运行时成本的情况,因此,是否重要取决于您的实际使用情况。     
不,您不能仅使用指向方法的指针来调用成员函数。原因是因为在上下文(
this
)中调用方法,上下文是在其上调用方法的对象。如果只有成员函数指针,则您将不知道应将方法应用于哪个对象。但是,如果成员函数为
static
,则它不具有上下文,因为可以在不实例化对象的情况下调用静态成员函数。 因此,要调用成员函数,您需要一个指向函数的指针,再加上对一个对象的引用,这些对象定义了调用成员函数的上下文。 这回答了你的问题了吗?     

要回复问题请先登录注册