正在从析构函数中调用非成员函数

Is calling non-member function from destructor OK?

本文关键字:成员 函数 调用 析构函数      更新时间:2023-10-16

在c++中,是否可以从析构函数中调用非成员函数(自由函数或其他对象的成员)?我正在调用另一个类的对象的方法(非虚拟的,尽管在这种情况下应该没有什么关系)。此方法在试图访问其成员时崩溃。

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

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

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

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