很多 C++ 书籍和教程都解释了如何做到这一点,但我还没有看到一本给出了令人信服的理由来选择这样做。
我非常理解为什么函数指针在 C 中是必要的(例如,当使用一些 POSIX 设施时)。但是,据我所知,由于“this”参数,您无法向他们发送成员函数。但是,如果您已经在使用类和对象,为什么不直接使用函子等面向对象的解决方案呢?
我们将不胜感激您必须使用此类函数指针的真实世界示例。
更新:我感谢大家的回答。但我不得不说,这些例子都没有真正让我相信从纯面向对象的角度来看这是一个有效的机制......
函子并不是先验的面向对象(在 C++ 中,术语“函子”通常意味着定义一个结构体)operator ()
具有任意参数和返回值,可以用作实际函数或函数指针的语法插入替换)。然而,他们的面向对象问题有很多问题,首先是可用性。这只是一大堆复杂的样板代码。为了像大多数对话框架一样建立一个像样的信令框架,大量的继承混乱变得必要。
实例绑定函数指针在这里会非常有用(.NET 通过委托充分演示了这一点)。
然而,C++ 成员函数指针仍然满足另一个需求。例如,想象一下,您在列表中有很多值,您想要执行其中的一个方法,例如print()
。函数指针指向YourType::size
在这里有帮助,因为它可以让你编写这样的代码:
std::for_each(lst.begin(), lst.end(), std::mem_fun(&YourType::print))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)