码迷,mamicode.com
首页 > 其他好文 > 详细

QT隐含共享类 QSharedData QSharedDataPointer

时间:2014-06-08 15:52:37      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:qt   隐含共享数据   

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 = d;

}


//示例代码

ImplicityClass ic1; //引用计数为1

ImplicityClass ic2 = ic1; //引用计数为2





QT隐含共享类 QSharedData QSharedDataPointer,布布扣,bubuko.com

QT隐含共享类 QSharedData QSharedDataPointer

标签:qt   隐含共享数据   

原文地址:http://blog.csdn.net/davidsu33/article/details/28857391

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!