为什么程序员更喜欢覆盖而不是使用函数指针字段?
性能优势?- 从来没听说过。
是代码可读性吗?- 不,语法几乎相同。
我看到的唯一区别是相反,即函数指针可以在运行时更改。
我在这里想念什么?
为什么程序员更喜欢覆盖而不是使用函数指针字段?
性能优势?- 从来没听说过。
是代码可读性吗?- 不,语法几乎相同。
我看到的唯一区别是相反,即函数指针可以在运行时更改。
我在这里想念什么?
您可以编写灵活的函数和库,允许程序员通过将函数指针作为参数传递来选择行为。
语法不一样,甚至调用语法也不一样。如果您查看使用函数指针的 C 库(例如Berkeley DB),您会发现您必须调用如下函数
db->fd(db, &filedesc);
即db
必须重复获得 C++ 中的内容this
(每个非静态方法的隐式参数)。
而且,正如您承认的那样,声明语法不同,设置结构/类也是如此。使用函数指针,您需要自己在每个实例上设置函数指针。这是乏味且容易出错的。
除此之外,覆盖更安全,因为它避免了函数指针为空或被重置为指向有趣的地方的问题。