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