• 3873阅读
  • 3回复

关于QDialog对象delete的问题!!! [复制链接]

上一主题 下一主题
离线bazzi2011
 

只看楼主 倒序阅读 楼主  发表于: 2014-10-14
文档上说:QObject及其派生类的对象,如果其parent非0,那么其parent析构时会析构该对象。


那么是不是我定义一个类
class myDlg : public QDialog



现在我new出一个类对象实例   myDlg *pDlg = new myDlg;
那么如果构造函数写成:
explicit myDlg(QWidget *parent = 0);
这样,是不是意味着我必须自己delete掉new出的类对象?
如果构造函数写成:
explicit myDlg(QWidget *parent);
这样,是不是意味着我不需要手动delete掉自己new出的类对象?
离线dbzhang800

只看该作者 1楼 发表于: 2014-10-14
理解有误,你这两个构造函数的写法没有本质区别。 再说了,你第二个构造函数的写法,你构造对象时,不可能不传递一个参数进去的。

即使你构造对象时,传递的parent参数是0或不是0。别人也无法知道你是否还调用了setParent() 函数或者其他影响parent的成员函数。
离线bazzi2011

只看该作者 2楼 发表于: 2014-10-14
回 dbzhang800 的帖子
dbzhang800:理解有误,你这两个构造函数的写法没有本质区别。 再说了,你第二个构造函数的写法,你构造对象时,不可能不传递一个参数进去的。
即使你构造对象时,传递的parent参数是0或不是0。别人也无法知道你是否还调用了setParent() 函数或者其他影响parent的成员函数。 (2014-10-14 13:55) 

先谢谢版主!其实我的核心问题是怎样设置parent就可以不用手动delete?怎样设置就必须手动delete?
我不太理解文档上的那句话!意思是我构造函数实现的时候如果传个0进去就必须手动delete处理new
的类对象了?
离线dbzhang800

只看该作者 3楼 发表于: 2014-10-14
快速回复
限100 字节
 
上一个 下一个