#include <QtCore/QCoreApplication>
#include <QScopedPointer>
#include <QSharedPointer>
#include <QWeakPointer>
#include <QDebug>
class MyClass
{
public:
MyClass():str("null")
{}
MyClass(const MyClass &rhs):str(rhs.str)
{}
MyClass &operator=(const MyClass &rhs)
{
if (this != &rhs)
str = rhs.str;
return *this;
}
~MyClass()
{
qDebug() << "delete";
}
QString str;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "test qscopedptr";
{
QScopedPointer<MyClass> m(new MyClass);
}
qDebug() << "test qsharedptr";
QSharedPointer<MyClass> s(new MyClass);
QSharedPointer<MyClass> s1 = s;
QWeakPointer<MyClass> w = s;
qDebug() << w.data()->str;
s.clear();
qDebug() &
Qt 智能指针实例
最新推荐文章于 2024-09-02 23:04:02 发布
本文介绍了Qt中的智能指针,包括它们如何通过RAII原则控制资源的生命周期。Scoped指针在作用域结束时自动释放资源,适合局部使用。Shared指针保持资源直到所有引用它的指针都解除引用,而Weak指针用于检测资源是否已释放,避免悬空指针问题。在实际应用中,结合使用这些智能指针可以提高代码的安全性和效率。
摘要由CSDN通过智能技术生成