首页 > 代码库 > QT隐含共享类 QSharedData QSharedDataPointer
QT隐含共享类 QSharedData QSharedDataPointer
QT中很多类都实现了隐含共享例如QString,QByteArray等,(这两个并没有使用QSharedData和QSharedDataPointer来实现隐含共享),但是QT的确提供了一套隐含共享机制的类QSharedData和QSharedDataPointer。核心原理是隐含共享数据指针(QSharedDataPointer重载->操作来控制所有对QSharedData数据对象的访问,确保统一的访问接口,来控制数据变化的时候,将QSharedData的原子引用计数清零。如下是我编写的示例代码。
//将所有需要共享的数据封装在SharedData中
class SharedData : public QSharedData
{
public:
int m_bigData;
};
//隐含共享类
class ImplicityClass
{
void setData(int d);
private:
SharedData m_ptr;
};
void ImplicityClass::setData(int d)
{
//核心功能,实现->操作符的重载,来确保所有对共享数据修改的时候,从共享数据中分离。
m_ptr->m_bigData = http://www.mamicode.com/d;
}
//示例代码
ImplicityClass ic1; //引用计数为1
ImplicityClass ic2 = ic1; //引用计数为2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。