C++中的纯虚函数调用

Pure virtual function call in C++

本文关键字:函数调用 C++      更新时间:2023-10-16

我的应用程序崩溃并显示消息"纯虚函数已调用"。我删除了所有纯虚函数并给了它们一个实现ASSERT(false);...所以它至少应该告诉我它崩溃的地方。而且,它没有。所以必须有另一个具有虚拟功能的位置,对吧?

如何在不使用调试器的情况下对其进行调试?

我碰巧遇到过的纯虚函数调用的最常见原因是:

  • 在销毁对象时调用这些对象的虚函数。
  • 仅复制基类后调用对象上的虚函数(对象切片)

如果您不想或无法调试,则至少应该放置一些跟踪/日志来查找何时/发生了什么。我建议你在某些对象的析构函数中放置一些跟踪。

销毁派生

对象后,虚拟表不再指向派生成员函数。如果你在对象的其余接口上调用一个函数,那么你就可以进行纯函数调用,因为派生的对象不再是,只保留它的超类。