覆盖vs函数指针

时间:2013-05-06 14:12:01

标签: function override function-pointers

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

性能优势? - 不是我所知道的。
是代码可读性吗? - 不,语法几乎相同。

我看到的唯一区别是矛盾,也就是说,函数指针可以在运行时更改 我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

语法不一样,甚至不是调用语法。如果你看一下使用函数指针的Berkeley DB等C库,你会发现你必须调用像

这样的函数
db->fd(db, &filedesc);

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

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

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