string * str=new string;
delete str;
Run Code Online (Sandbox Code Playgroud)
当我删除指向一个对象的'str'时,会调用两个析构函数 - 一个用于指针本身,一个用于指向它的对象?
指针的析构函数会做什么?
Jos*_*eld 15
delete只是导致给定指针指向的对象被销毁(在这种情况下,string对象.指针本身,由表示str,具有自动存储持续时间,并且当它超出范围时将被销毁,就像任何其他局部变量一样.
但请注意,非类类型没有析构函数.因此,即使您使用delete非类型类型,也不会调用析构函数,但是当指针超出范围时,它会像通常与任何其他自动变量一样被破坏(意味着指针刚刚到达其生命周期的末尾,尽管内存指向指针不释放,直到您使用delete显式释放它.).