0

为什么程序员更喜欢覆盖而不是使用函数指针字段?

性能优势?- 从来没听说过。
是代码可读性吗?- 不,语法几乎相同。

我看到的唯一区别是相反,即函数指针可以在运行时更改。
我在这里想念什么?

4

2 回答 2

0

您可以编写灵活的函数和库,允许程序员通过将函数指针作为参数传递来选择行为。

于 2013-05-06T14:20:03.560 回答
0

语法不一样,甚至调用语法也不一样。如果您查看使用函数指针的 C 库(例如Berkeley DB),您会发现您必须调用如下函数

db->fd(db, &filedesc);

db必须重复获得 C++ 中的内容this(每个非静态方法的隐式参数)。

而且,正如您承认的那样,声明语法不同,设置结构/类也是如此。使用函数指针,您需要自己在每个实例上设置函数指针。这是乏味且容易出错的。

除此之外,覆盖更安全,因为它避免了函数指针为空或被重置为指向有趣的地方的问题。

于 2013-05-06T14:21:12.510 回答