用QT编程是怎么实现内存管理的,怎么没有析构函数?
正想学习QT,
我看了QT SDK中的实例程序,发现它和VC写的类中的一个最大区别是居然没有析构函数!
比如在类中定义:QPlainTextEdit *textEdit;并且在QT构造函数中 textEdit = new QPlainTextEdit;
没有析构函数,用new创建的资源是怎么回收的?编译器处理的?
呃,关键字delete好像也没见!!
感觉如果去掉指针就是java了,风格和Java很相近呀,大家说是不是?
[解决办法]
应该里面实现了智能指针。
[解决办法]
Qt automatically deletes child objects when the parent is destroyed
[解决办法]
qt的这个设计可能更应该被看成是缺陷。
[解决办法]
多数 QObject 的构造函数都有一个 parent 参数,各个部件就是这样串起来的。
Qt 运行库负责保证这样串起来的对象会自动自顶向下销毁。
[解决办法]
QT会自动为你做这些,你可以无视它,自己动手析构,也是ok的
[解决办法]
跟java很像吧,不用你自己管理内存了。但写的方式却是c++的,带了个*, 不用delete了。