加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – “隐式共享”是否可以从Qt类中删除?

发布时间:2020-12-16 07:09:43 所属栏目:百科 来源:网络整理
导读:如果我创建一个隐式共享Qt类的子类(例如,QList),我的子类也会被隐式共享吗? 我阅读了QtCore5.3文档中的brief introduction to implicit sharing,但我没有看到任何遗传性. 我的目的是在决定传递哪些参数以及如何传递它们时尝试编写更有效的代码. 解决方法 正
如果我创建一个隐式共享Qt类的子类(例如,QList),我的子类也会被隐式共享吗?

我阅读了QtCore5.3文档中的brief introduction to implicit sharing,但我没有看到任何遗传性.

我的目的是在决定传递哪些参数以及如何传递它们时尝试编写更有效的代码.

解决方法

正如评论中所述,使用隐式共享的Qt类通常是数据容器或工具,并不打算进行子类化.
您可以注意到,因为没有虚拟析构函数,实际上根本没有虚函数.

由于存在风险和不良做法,您可能希望在没有继承的情况下进行不同的设计.

回答你的问题:

隐式共享如何工作?
类实例共享数据,并通过调用detach()函数明确告知何时需要修改此数据(从而深度复制它).
因此,母类数据仍然是共享数据指针,并且母类方法仍然会在适当的时候分离.但是您的子类数据成员不会被隐式共享,并且您的子类方法在可能需要时不会隐式分离.
您也可能会重载方法而忘记分离,从而弄乱了共享数据.

您不会受益于隐式共享,您必须为您自己的数据再次显式设置它.
您需要将数据封装在共享数据容器中,并管理方法中的分离.检查文档:
http://doc.qt.io/qt-5/qshareddatapointer.html#details

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读