• 11041阅读
  • 7回复

【提问】请问qt中的所有qobject是不是自动托管呢 [复制链接]

上一主题 下一主题
离线windytwang
 

只看楼主 倒序阅读 楼主  发表于: 2006-03-11
就是类似c#中的垃圾回收
也即是QPushButton *button = new QPushButton;后
不需要对button进行delete操作,在超出它的作用域后将自动delete
我试了一下,好像对所有的qt自己的类,以及自己继承于它的类,都会自动析构。
但是在帮助文件中并没看到有提到这一点,不知道各位是怎么看的?
[ 此贴被XChinux在2006-03-11 09:33重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2006-03-11
不是的。C# 中,一般来说new的对象不用自己担心删除,反正它会删除,只注意生存期就行了。
但C++中不是这样,以Qt的支持来说,new了一个A,同时指定其parent为B,这样在B析构的时候能找到A而对其进行析构,当然,自己来delete A也可以。但如果new的时候没有指定parent,那么就没人管它,在跳出指针作用域后,我们就找不到其地址了,怎么来delete??
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线windytwang

只看该作者 2楼 发表于: 2006-03-11
谢谢。
那如果全是继承于qt的类,都有parent了的话,那么就不用自己去delete了吧?
离线XChinux

只看该作者 3楼 发表于: 2006-03-11
看自己的需要而定,况且也并不是所有的类都有parent
先学Java和C#,再转过头来学C++,容易把不delete的习惯带进来,并不是什么好事情。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线nanhu_007

只看该作者 4楼 发表于: 2006-03-11
有parent时候就不需要自己delete
离线windytwang

只看该作者 5楼 发表于: 2006-03-12
谢谢
离线windytwang

只看该作者 6楼 发表于: 2006-03-14
我回去又自己测试了一下,
发现还是XChinux说得对,
必须要指定了parent后才会自动释放
所以在很多时候都要delete的
发现这一点,再看已经写过的QT代码,好多的内存泄露
离线wylhistory
只看该作者 7楼 发表于: 2006-03-16
又长了点见识,以前都是逢new用delete逢malloc用free,想不到还可以偷点懒,好事情!
快速回复
限100 字节
 
上一个 下一个