从析构函数调用非成员函数可以吗?

Is calling non-member function from destructor OK?

在 C++ 中,可以从析构函数中调用非成员函数(自由函数或其他对象的成员)吗?我正在调用另一个 class 对象的一个​​(非虚拟的,尽管在这种情况下它并不重要)方法。此方法在尝试访问其成员时崩溃。

另一方面,如果这个不同的对象是被析构对象 (Qt) 的子对象,这有关系吗?

一般来说,析构函数可以调用它需要的任何函数来正确销毁对象。但是,有几点需要注意:

  1. 如果从析构函数调用的函数抛出异常,则必须在析构函数中捕获并处理该异常。

  2. 从析构函数调用的函数不能无条件地创建和销毁析构函数所属类型的对象(因为这将导致无限递归)。