QT智能指针QSharedPointer之中文文档不要忽悠我
来源:互联网 发布:windows声音设置 编辑:程序博客网 时间:2024/06/05 23:47
别看那么多智能指针的中文文档,没看懂反而看蒙了
官方文档:
QSharedPointer will delete the pointer it is holding when it goes out of scope, provided no otherQSharedPointer objects are referencing it.
QSharedPointer在代码执行超出其作用域,且是最后一个holding p的QSharedPointer时(p为其holding的指针),将执行delete p。
与QScopedPointer不同的是,QSharedPointer允许互相复制,直到所有holding p的QSharedPointer都超出作用域时,再执行delete p。
就这么简单!
另外:
1.即使A继承子QObject,在删除A对象时也不会自动删除A new的对象,需要显式指定父子关系
2.多次测试暂未发现智能指针因多次析构而发生错误
测试代码:
class QtSmartPointerTest
{
public:
QtSmartPointerTest()
{
qDebug() << "creating";
}
~QtSmartPointerTest()
{
qDebug() << "deleting";
}
int var = 8;
};
class Test
{
public:
Test()
{
qDebug() << "creating Test";
spt_ptr = new QtSmartPointerTest();
qDebug() << spt_ptr->var;
QSharedPointer<QtSmartPointerTest> spt_sptr(spt_ptr);
qDebug() << spt_ptr;
}
~Test()
{
qDebug() << spt_ptr->var <<spt_ptr;
qDebug() << "deleting Test";
}
QtSmartPointerTest *spt_ptr;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Test* test = new Test();
delete test;
return a.exec();
}
输出结果:
creating Test
creating
8
0x8f181d0
deleting //QSharedPointer调用
0 0x8f181d0 //已经析构
deleting Test
- QT智能指针QSharedPointer之中文文档不要忽悠我
- 信号中,参数为QSharedPointer 智能指针类型
- 引用计数我不怕之智能指针
- Qt 智能指针学习
- Qt中的智能指针
- Qt 智能指针学习
- Qt 智能指针学习
- Qt 智能指针学习
- Qt 智能指针学习
- Qt智能指针
- Qt 智能指针学习
- Qt中的智能指针
- Qt 智能指针实例
- Qt智能指针
- Qt 智能指针学习
- Qt中的智能指针
- Qt 中的智能指针
- Qt--智能指针
- 二叉搜索树与双向链表(中序遍历 ****)
- 当你选择技术,请记住,问题永远比想象多--数据库写入失败
- 分治法——二分查找
- MATLAB对于dll引用,显示未定义
- 代理模式
- QT智能指针QSharedPointer之中文文档不要忽悠我
- js学习日记(一)
- 【java集合】自己实现简易的HashSet
- Ajax 、comet,红宝书
- 函数栈帧的创建与销毁
- 随笔一篇
- op输入失调电压
- LeetCode 95. Unique Binary Search Trees II&96. Unique Binary Search Trees--动态规划,二叉树
- centos 7 安装gcc6.2编译器