关于QSharedPointer
当声明:
QSharedPointer<MyClass> ptr;
时,ptr是一个空指针。
这句代码创建了一个类型为 QSharedPointer 的对象,但还没有指向任何实际对象。
QSharedPointer 的默认构造函数,会让它处于“未管理任何对象”的状态。这和原生指针 MyClass* p = nullptr; 的效果是一样的。
此时,ptr == nullptr 为 true,!ptr 也为 true。
只有你用如下方式赋值后,ptr 才是非空指针:
ptr = QSharedPointer<MyClass>::create();
或
ptr = QSharedPointer<MyClass>(new MyClass);
如果MyClass有被赋值的对象:
MyClass a; // 先创建一个对象a
// ...
QSharedPointer<MyClass> ptr = QSharedPointer<MyClass>(new MyClass(a));
// 或者赋值: ptr = QSharedPointer<MyClass>(new MyClass(a));