草庐IT

Destructor

全部标签

c++ - _Exit 在 C++ 程序中的行为如何?

C99提供了_Exit函数,它“立即”退出,尽管它确实可能会关闭文件描述符。Unix/POSIX通过强制关闭所有fd而不刷新(并提供同义词_exit)来扩展此行为。当从C++程序调用时,这些函数会调用static对象的析构函数吗?C++标准是否对_Exit做出任何保证?(受thisquestion启发;我突然想知道C++中典型的fork-exec-_exit习语会发生什么。) 最佳答案 首先,任何形式的程序退出都不会自动调用堆对象的析构函数(在ISO/IEC14882:1998(E)12.4.10中暗示)。调用exit()不会为具有

c++ - _Exit 在 C++ 程序中的行为如何?

C99提供了_Exit函数,它“立即”退出,尽管它确实可能会关闭文件描述符。Unix/POSIX通过强制关闭所有fd而不刷新(并提供同义词_exit)来扩展此行为。当从C++程序调用时,这些函数会调用static对象的析构函数吗?C++标准是否对_Exit做出任何保证?(受thisquestion启发;我突然想知道C++中典型的fork-exec-_exit习语会发生什么。) 最佳答案 首先,任何形式的程序退出都不会自动调用堆对象的析构函数(在ISO/IEC14882:1998(E)12.4.10中暗示)。调用exit()不会为具有

c++ - 删除与运算符删除(和空指针)

deleteptr与operatordelete(ptr)的区别仅在于delete调用ptr析构函数?或者换句话说,deleteptr是否首先调用ptr的析构函数,然后调用operatordelete(ptr)来释放分配的内存?那么deleteptr在技术上等同于以下内容:T*ptr=newT;//deleteptrequivalent:ptr->~T();::operatordelete(static_cast(ptr));? 最佳答案 deleteptr会对operatordelete做重载解析,所以它可能不会调用全局::ope

c++ - 删除与运算符删除(和空指针)

deleteptr与operatordelete(ptr)的区别仅在于delete调用ptr析构函数?或者换句话说,deleteptr是否首先调用ptr的析构函数,然后调用operatordelete(ptr)来释放分配的内存?那么deleteptr在技术上等同于以下内容:T*ptr=newT;//deleteptrequivalent:ptr->~T();::operatordelete(static_cast(ptr));? 最佳答案 deleteptr会对operatordelete做重载解析,所以它可能不会调用全局::ope

c++ - 异常规范如何影响虚拟析构函数覆盖?

C++标准规定了以下关于具有异常规范的虚函数:Ifavirtualfunctionhasanexception-specification,alldeclarations,includingthedefinition,ofanyfunctionthatoverridesthatvirtualfunctioninanyderivedclassshallonlyallowexceptionsthatareallowedbytheexception-specificationofthebaseclassvirtualfunction(C++03§15.4/3).因此,以下格式不正确:stru

c++ - 异常规范如何影响虚拟析构函数覆盖?

C++标准规定了以下关于具有异常规范的虚函数:Ifavirtualfunctionhasanexception-specification,alldeclarations,includingthedefinition,ofanyfunctionthatoverridesthatvirtualfunctioninanyderivedclassshallonlyallowexceptionsthatareallowedbytheexception-specificationofthebaseclassvirtualfunction(C++03§15.4/3).因此,以下格式不正确:stru

c++ - 如何删除没有虚拟析构函数的多态类类型的对象

当我尝试从第三方SDK编译一些代码时出现以下错误。*DescriptionResourcePathLocationTypedeletingobjectofpolymorphicclasstype‘Vendor_sys::VendorCode’whichhasnon-virtualdestructormightcauseundefinedbehaviour[-Werror=delete-non-virtual-dtor]PnServer.cpp/PCounterline467C/C++Problem*我不知道仅对供应商的SDK有部分了解是否可以满足此条件,其中大部分繁重的工作都是在dll

c++ - 如何删除没有虚拟析构函数的多态类类型的对象

当我尝试从第三方SDK编译一些代码时出现以下错误。*DescriptionResourcePathLocationTypedeletingobjectofpolymorphicclasstype‘Vendor_sys::VendorCode’whichhasnon-virtualdestructormightcauseundefinedbehaviour[-Werror=delete-non-virtual-dtor]PnServer.cpp/PCounterline467C/C++Problem*我不知道仅对供应商的SDK有部分了解是否可以满足此条件,其中大部分繁重的工作都是在dll

c++ - 析构函数可以重载吗?

enable_ifdocpage说:Constructorsanddestructorsdonothaveareturntype;anextraargumentistheonlyoption.析构函数可以重载吗? 最佳答案 No       关于c++-析构函数可以重载吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6243605/

c++ - 析构函数可以重载吗?

enable_ifdocpage说:Constructorsanddestructorsdonothaveareturntype;anextraargumentistheonlyoption.析构函数可以重载吗? 最佳答案 No       关于c++-析构函数可以重载吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6243605/