gpt4 book ai didi

c++ - 虚函数与回调

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:50 25 4
gpt4 key购买 nike

考虑一个场景,其中有两个类,即 Base 和 Derived。如果基类想要调用派生类的函数,它可以通过创建一个虚函数并在派生类中定义该 VF 或使用回调来实现.我想知道两者中应该优先选择什么?两者之间的选择取决于哪些情况/条件?

编辑:问题澄清:

我指的情况是有一个接收消息的基类。这些不同的消息将由派生类以不同方式处理,因此一种方法是创建一个虚函数并让派生类实现它,通过各种 switch case 处理每条消息。

另一种方法是通过模板内部的函数指针(指向派生类的函数)实现回调(处理派生类的对象和函数名需要模板)。模板和函数指针将驻留在基类中。

最佳答案

虚函数调用实际上是一个回调。

调用者在对象的虚函数表中查找相应的条目并调用它。这与回调的行为完全一样,只是成员函数指针的语法很笨拙。虚函数将工作卸载给编译器,这使它们成为一个非常优雅的解决方案。

虚函数是在继承层次结构中进行通信的方式。

关于c++ - 虚函数与回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com