首先,new一个对象会调用对象的构造函数。
delete一个对象会调用对象的析构函数。(准确来讲是delete一个对象指针)
我们对delete进行展开,看下面一个例子:
delete c做了两步工作:1.调用析构函数 2.通过析构函数释放了这个对象占据的空间。(如果析构函数中没有释放a,那么delete c会导致内存泄漏)。
这里,要注意的是,针对new A, 先有delete,之后才析构。有先后关系。
对象树机制会自动调用析构函数其实就是会自动delete.
子窗体的构造函数中初始化了父窗体的parent,当关闭子窗体时不会调用析构函数,
只有关闭父窗体时,才会调用子窗体的析构函数, (若是子窗体定义在栈中,则作用域结束,是会自动析构的,父窗体一般定义在栈中。)
解决办法如下
子窗口构造函数中添加:setAttribute(Qt::WA_DeleteOnClose) //子窗口关闭时销毁该类的实例对象。
子窗体一般都是在堆空间中,用来长时间显示,主窗体一般定义在栈中,通过模态运行。
标准对话框(一些静态方法),在显示过后是会delete的。(源码内实现)
标签:调用,窗口,函数,对象,问题,窗体,析构,delete From: https://www.cnblogs.com/ylww/p/17084521.html