Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从析构函数调用非成员函数可以吗? 在C++中,调用析构函数中的非成员函数(自由函数或其他对象的成员)是否可以?我正在调用另一个类的对象的(非虚拟的,尽管在本例中它实际上并不重要)方法。此方法在尝试访问其成员时崩溃_C++_Qt_Crash_Destructor - Fatal编程技术网

从析构函数调用非成员函数可以吗? 在C++中,调用析构函数中的非成员函数(自由函数或其他对象的成员)是否可以?我正在调用另一个类的对象的(非虚拟的,尽管在本例中它实际上并不重要)方法。此方法在尝试访问其成员时崩溃

从析构函数调用非成员函数可以吗? 在C++中,调用析构函数中的非成员函数(自由函数或其他对象的成员)是否可以?我正在调用另一个类的对象的(非虚拟的,尽管在本例中它实际上并不重要)方法。此方法在尝试访问其成员时崩溃,c++,qt,crash,destructor,C++,Qt,Crash,Destructor,另一方面,如果这个不同的对象是析构函数对象(Qt)的子对象,这有关系吗?通常析构函数可以调用它需要的任何函数来正确地销毁对象。但是,有几个警告: 如果从析构函数调用的函数引发异常,则必须在析构函数中捕获并处理该异常 从析构函数调用的函数不能无条件地创建和销毁析构函数所属类型的对象(因为这将导致无限递归) 通常,析构函数可以调用它需要的任何函数来正确地销毁对象。但是,有几个警告: 如果从析构函数调用的函数引发异常,则必须在析构函数中捕获并处理该异常 从析构函数调用的函数不能无条件地创建和销毁析构函

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

通常析构函数可以调用它需要的任何函数来正确地销毁对象。但是,有几个警告:

  • 如果从析构函数调用的函数引发异常,则必须在析构函数中捕获并处理该异常

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


  • 通常,析构函数可以调用它需要的任何函数来正确地销毁对象。但是,有几个警告:

  • 如果从析构函数调用的函数引发异常,则必须在析构函数中捕获并处理该异常

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


  • 为什么不可以呢?虫子肯定在别的地方。(但请注意,析构函数中不应该存在未捕获的异常)。(一个类从另一个类继承不应该改变任何东西)继承的对象是自上而下销毁的。因此,尝试在基本对象的析构函数中访问属于继承对象的内容是未定义的行为。只要它不是虚拟函数,就应该可以。最好添加一个示例来演示您的问题……您的术语没有意义。一个对象是另一个对象的“子对象”有什么关系?为什么不可以?虫子肯定在别的地方。(但请注意,析构函数中不应该存在未捕获的异常)。(一个类从另一个类继承不应该改变任何东西)继承的对象是自上而下销毁的。因此,尝试在基本对象的析构函数中访问属于继承对象的内容是未定义的行为。只要它不是虚拟函数,就应该可以。最好添加一个示例来演示您的问题……您的术语没有意义。一个对象成为另一个对象的“子对象”有什么意义?