QWeakPointer 是为配合 QSharedPointer 而引入的一种智能指针,它更像是 QSharedPointer 的一个助手(因为它不具有普通指针的行为,没有重载operator*和->)。它的最大作用在于协助 QSharedPointer 工作,像一个旁观者一样来观测资源的使用情况。 (转自:https://blog.csdn.net/liyuanbhu/article/details/77825655?utm...
由于使用了引用计数,QSharedPointer 能够自动处理指针的生命周期,避免内存泄漏和空悬指针等问题,因此是Qt中最常用的智能指针。 需要注意的是,QSharedPointer只能管理动态分配的对象的内存。如果我们将其用于指向栈对象或全局对象,那么它就不会自动释放对象的内存,这可能会导致程序崩溃或内存泄漏。 创建QSharedPointer 对象...
智能指针不能指向数组(因为其实现中调用的是delete而非delete[]) 智能指针不能作为容器类的元素。 在C++0x中,auto_ptr已经不建议使用,以后应该会被其他3个智能指针所取代。 QScopedPointer 与 std::unique_ptr 它们概念上应该是是一样的。下面不再区分: 这是一个很类似auto_ptr的智能指针,它包装了new操作符在堆...
在这种情况下,如果将指针转换为不同类型并且其值发生变化,QSharedPointer的指针跟踪机制可能无法检测到正在跟踪的对象是相同的。 ·引用计数器·浅解: Qt智能指针QSharedPointer与 C++中的std::shared_ptr其作用是一样的,其应用范围比本文说到的QPointer和QScopedPointer更广。 QSharedPointer是一个共享指针,它与 QSc...
C++ Qt面试题67:对C++11 的智能指针了解多少? 01:52 C++ Qt面试题68:show()和exec()的区别? 01:27 C++ Qt面试题69:请讲述Qt的事件循环机制? 05:08 C++ Qt面试题70:讲一下Qt的D指针和Q指针? 01:17 C++ Qt面试题71:如何在Qt中创建自定义控件 01:12 C++ Qt面试题72:讲述Qt信号槽的调用流程...
智能指针内部维护了一个引用计数器,当一个智能指针被创建或拷贝时,计数器加1;当一个智能指针被销毁或重置时,计数器减1。当计数器减至0时,智能指针会自动释放其所指向的内存。这种方式称为“所有权”(ownership)模型,智能指针具有其内存的所有权,避免了普通指针中的多个指针指向同一内存地址的情况。
C++ Qt面试题67:对C++11 的智能指针了解多少? 01:52 C++ Qt面试题68:show()和exec()的区别? 01:27 C++ Qt面试题69:请讲述Qt的事件循环机制? 05:08 C++ Qt面试题70:讲一下Qt的D指针和Q指针? 01:17 C++ Qt面试题71:如何在Qt中创建自定义控件 01:12 C++ Qt面试题72:讲述Qt信号槽的调用流程...
QString::fromLocal8Bit() 例如:QString::fromLocal8Bit(“你好”)QStringLiteral() 宏 例如:QStringLiteral(“中国”2.指针分类 内置指针:内置类型的指针; 内置类型:int, float, char 内置类型普通指针:普通类型(非内置类型)的指针;Class *ptr1, Class *ptr2.是普通指针智能指针:不需要手动申请释放的...
QEnableSharedFromThis的出现是为了解决不能返回this共享智能指针的问题。前面提到,只允许在创建新的对象的时候,用裸指针初始化QSharedPointer,其它情况下不允许用裸指针初始化QSharedPointer,否则会造成引用计数错误。而this是一个裸指针,因此,我们在成员函数内使用QSharedPointer<this>是不允许的。