当前位置: 首页 > wzjs >正文

济南网站建设开发公司宝山网页设计制作

济南网站建设开发公司,宝山网页设计制作,ppt的网站导航栏怎么做,深圳住房和建设局网站网上预约在Qt中,显式使用new创建的对象通常不需要显式调用delete来释放内存,这是因为Qt提供了一种基于对象树(Object Tree)和父子关系(Parent-Child Relationship)的内存管理机制。这种机制可以自动管理对象的生命周期,确保在适当的时候释放内存&…

      在Qt中,显式使用new创建的对象通常不需要显式调用delete来释放内存,这是因为Qt提供了一种基于对象树(Object Tree)和父子关系(Parent-Child Relationship)的内存管理机制。这种机制可以自动管理对象的生命周期,确保在适当的时候释放内存:

      在Qt中,每个QObject或其派生类(如QWidget、QPushButton)都可以有一个父对象(Parent)。

      当创建一个对象时,如果指定了父对象,则该对象会被添加到父对象的子对象列表中。

      当父对象被销毁时,Qt会自动递归销毁其所有子对象,从而释放内存。

      QObject的析构函数会遍历其子对象列表,并递归调用每个子对象的析构函数。这种机制确保了所有子对象都会被正确释放。

      显式调用delete仅在对象没有父对象或需要手动管理生命周期时才需要。

      对象树

      (1).QObject在对象树中自我组织(QObjects organize themselves in object trees)。当你创建一个以另一个对象为父对象的QObject时,它会被添加到父对象的 children()列表中,并在父对象被删除时被删除。事实证明,这种方法非常适合GUI对象的需求。例如,QShortcut(键盘快捷键)是相关窗口的子对象,因此当用户关闭该窗口时,快捷方式也会被删除。

      (2).QWidget是Qt Widgets模块的基类,它扩展了父子关系(parent-child relationship)。QWidget继承自QObject、QPaintDevice。

      (3).你还可以自行删除子对象,这些子对象会从其父对象中移除

      (4).每个QObject都可以参与对象树。每个QObject都有一个子对象列表,也可能有一个父QObject。当QObject被销毁时,其所有附加子对象都会随之销毁。

      对象树(Object Tree)是由父对象(Parent Object)及其子对象(Child Objects)构成的树状结构。在这个结构中,每一个对象都可以拥有子对象,而每个子对象又只能有一个父对象。这种父子关系不仅反映了对象之间的层级结构,还意味着当父对象被销毁时,所有的子对象也将被自动销毁。

      QObject构造/析构顺序:当QObject在堆(heap)上创建时(即使用new创建),可以按任意顺序从它们构建树,之后,可以按任意顺序销毁树中的对象。当删除树中的任何QObject时,如果该对象有父对象,则析构函数会自动从其父对象中删除该对象。如果该对象有子对象,则析构函数会自动删除每个子对象。无论析构顺序如何,都不会删除两次QObject。

      QObject包含许多用于检查此对象树的方法:

      (1).parent():获取对象的父对象,或为null。

      (2).setParent():设置对象的父对象。

      (3).children():获取属于该对象的子对象列表。

      在Qt框架中,几乎所有的事物都是对象。对象通常使用动态内存分配(Dynamic Memory Allocation)创建,即通过new关键字。在Qt中,当一个对象被创建时,可以指定另一个对象作为它的父对象。这种关系建立后,子对象的生命周期便与父对象紧密相关。当父对象被销毁时,它会自动销毁其所有子对象,从而保证资源的正确释放。

      C++中的继承主要用于代码复用和多态性,而Qt中的父子关系主要用于内存管理和对象生命周期的控制

      下载Qt6.8源码:

git clone git://code.qt.io/qt/qt5.git
cd qt5
git submodule update --init --recursive
git checkout v6.8.0

      以下为测试代码:

#include <QObject>
#include <QDebug>namespace {class MyObject : public QObject {
public:explicit MyObject(const QString& name, QObject* parent = nullptr) : QObject(parent), name_(name){qDebug() << "Constructor: " << name_;}~MyObject(){qDebug() << "Destructor: " << name_;}QString name() const{return name_;}private:QString name_{};
};} // namespaceint test_memory_management()
{MyObject* parent = new MyObject("parent object");MyObject* child1 = new MyObject("child object1", parent);//MyObject* child2 = new MyObject("child object2", parent);MyObject* child2 = new MyObject("child object2");child2->setParent(parent);for (auto obj : parent->children()) {qDebug() << "child object name: " << ((MyObject*)obj)->name();}qDebug() << "child2 parent object name: " << ((MyObject*)child2->parent())->name();delete parent; // manually delete the parent objectreturn 0;
}

      执行结果如下图所示:

      GitHub:https://github.com/fengbingchun/Qt_Test


文章转载自:

http://BYcIKKVo.mhnrx.cn
http://DOK8vwAx.mhnrx.cn
http://Sa2zU4Pu.mhnrx.cn
http://tEUbmp9O.mhnrx.cn
http://AlWJWaJJ.mhnrx.cn
http://mfqVEOTn.mhnrx.cn
http://us6A9RKS.mhnrx.cn
http://e0dmP4jv.mhnrx.cn
http://yCAsIJ8V.mhnrx.cn
http://zHKOo9O0.mhnrx.cn
http://HmXENGLV.mhnrx.cn
http://Ng31SyLz.mhnrx.cn
http://D9wJta8s.mhnrx.cn
http://KhDCjcHS.mhnrx.cn
http://UYyd30bw.mhnrx.cn
http://xGx3ovTl.mhnrx.cn
http://5LMUh3iT.mhnrx.cn
http://c0QaaAgi.mhnrx.cn
http://8NhQbv34.mhnrx.cn
http://o4tTnvR5.mhnrx.cn
http://o1bTHiWq.mhnrx.cn
http://IYvNgS9M.mhnrx.cn
http://S7sZcvGF.mhnrx.cn
http://WFL2W7TV.mhnrx.cn
http://udoPZ2rX.mhnrx.cn
http://3EbZWtCV.mhnrx.cn
http://18gaqdGd.mhnrx.cn
http://6vl2IvBA.mhnrx.cn
http://jpl7L25Z.mhnrx.cn
http://8XRn8O1G.mhnrx.cn
http://www.dtcms.com/wzjs/670584.html

相关文章:

  • 捕鱼网站开发html5网站开发工具有哪些
  • 谁家网站做的好商务网站建设论文答辩ppt
  • 重庆建设银行网站首页万网域名注册官网网页版
  • 如何利用淘宝建设网站挣钱国内产品网站
  • 海外建站服务平台静安做网站的公司
  • 网站建设相关网站文章网站后台
  • 做网站代理能赚钱吗网站开发技术是什么
  • 乐清网站制作公司哪家好怎么把电脑网站做服务器吗
  • 顶呱呱做网站济南市莱芜区网站
  • 电子商务网站建设基础步骤更改host文件把淘宝指向自己做的钓鱼网站
  • 网站开发pdfwordpress安装到的数据库名称
  • 蓝色机械企业网站模板网站建设费的摊销年限
  • 如何获取所有网站免费咨询服务
  • 9免费建网站社群营销策略有哪些
  • 汕头网站优化公司电脑怎么建网站
  • 技术网站品牌推广方案包括哪些
  • 哪里医院做无痛人流便宜 咨询网站在线做网站的电脑需要什么配置
  • 电子商务网站运营流程广州住建网站
  • 咸阳做网站开发公司网站管理系统哪个最好
  • 网站设计知识准备中文安卓开发工具
  • 怎么申请 免费网站空间旅游主题网站策划书
  • 百度网址大全网站大全从化区城郊街道网站麻二村生态建设
  • 网站后台维护一般要怎么做王也头像高清
  • 做网站网页的公司网站建设好还需要续费吗
  • 兰州网站制作公司在哪里国家住房和城乡建设部官网
  • 住房和城乡建设部网站科技项目wordpress附件投稿
  • 襄阳大摩网站建设wordpress整站迁移
  • 冷水江网页定制公司网站 seo
  • 岱山县网站建设wordpress系统教程 pdf
  • 浦东做网站的公司网络营销的理论