当前位置:  开发笔记 > 编程语言 > 正文

为什么在C++中使用函数指针到成员方法?

如何解决《为什么在C++中使用函数指针到成员方法?》经验,为你挑选了1个好方法。

很多C++书籍和教程都解释了如何做到这一点,但我没有看到一个给出令人信服的理由选择这样做.

我很清楚为什么在C中需要函数指针(例如,当使用一些POSIX工具时).但是,由于"this"参数,AFAIK无法向其发送成员函数.但是如果你已经在使用类和对象,为什么不使用像functor这样的面向对象的解决方案?

您将不得不使用此类函数指针的真实示例将不胜感激.

更新:我感谢大家的回答.不过,我不得不说,这些例子中没有一个确实让我相信这是一个从纯OO角度来看的有效机制......



1> Konrad Rudol..:

Functor不是面向对象的先验(在C++中,术语"functor"通常表示一个结构,用于定义operator ()具有任意参数和返回值的结构,可以用作实际函数或函数指针的语法插入替换).然而,他们面向对象的问题有很多问题,首先是可用性.它只是一大堆复杂的样板代码.为了像大多数对话框架一样有一个像样的信号框架,需要大量的继承混乱.

实例绑定函数指针在这里非常有用(.NET通过委托充分证明了这一点).

但是,C++成员函数指针仍然满足另一个需求.想象一下,例如,你想要执行一个方法的列表中有很多值,比如它print().一个函数指针YourType::size有助于此处,因为它允许您编写此类代码:

std::for_each(lst.begin(), lst.end(), std::mem_fun(&YourType::print))

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有