草庐IT

QSharedData

全部标签

c++ - 'implicit sharing' 是否可从 Qt 类继承?

如果我创建一个隐式共享的Qt类(例如QList)的子类,我的子类也会被隐式共享吗?我读了briefintroductiontoimplicitsharing位于QtCore5.3文档中,但我没有看到任何关于遗传性的提及。我提问的目的是在决定传递哪些参数以及如何传递它们时尝试编写更高效的代码。 最佳答案 如评论中所述,使用隐式共享的Qt类通常是数据容器或工具,不打算被子类化。您会注意到,因为没有虚析构函数,实际上根本就没有虚函数。由于风险和不良做法,您可能希望在没有继承的情况下进行不同的设计。回答你的问题:隐式共享如何运作?类实例共享

c++ - QSharedData 和运算符=

最近我想实现隐式共享功能,就像Qt对其QSharedData和QSharedDataPointer类所做的那样,所以我查看了它们的源代码并代替了QSharedData我找到了这三行:private://usingtheassignmentoperatorwouldleadtocorruptionintheref-countingQSharedData&operator=(constQSharedData&);但是我不明白operator=怎么会破坏引用计数。如果我只是不将其设为私有(private)并将其实现留空,它是否可以达到相同的目的?即如果我简单地这样写:public:QShar

c++ - 具有前向声明类的 QSharedDataPointer

Qtdocumentation建议将QSharedDataPointer与其劣势的可见实现一起使用是不典型的。所以根据文档中的小例子,我想出了以下来源(SSCCE)。接口(interface):Model.h接口(interface)很简单,只是私有(private)类和句柄类的前向声明,声明了copy-ctor和d-tor:#includeclassModelPrivate;classModel{public:Model();Model(constModel&other);~Model();QSharedDataPointerd;};私有(private)头文件:Model_p.h只

c++ - QSharedData 和继承

我正在尝试使用QSharedData创建一个类型系统。这个想法很简单,会有许多不同的数据类型,每一种都将派生自基本抽象类。我想使用QSharedData将实际数据存储在它们中的每一个中,但是每个派生类将在其中存储不同的数据。我现在正在尝试制作最基本的示例,但遇到了一些麻烦。假设这些是我的基础纯虚拟类:classcAbstractData:publicQSharedData{public:cAbstractData(){}virtualinttype()=0;};classcAbstractValue{public:cAbstractValue(){}virtualinttype()=0

c++ - 我是否应该将所有数据类实现为 QSharedData 并将其与 QSharedDataPointer 一起使用?

我是一名Qt初学者,需要编写一些数据类。像QSharedDataPointer示例(here)那样编写所有这些类是否是一种好方法,或者这是不是开销太大(除了工作量更大这一事实)?我的类本质上非常像下面的Employee类。我将不得不处理数百个实例,而不是一万或数百万。我使用QSharedData/QShareDataPointer的动机是简化手动内存管理并具有通用的代码风格。但我仍然不确定我是否监督了一些警告。来自example:classEmployeeData:publicQSharedData{public:EmployeeData();EmployeeData(constEmp