QSharedPointer<T>与T*指针的比较:直接判等是否可行?
你给出的代码示例:
MyClass* object = new MyClass; QSharedPointer<MyClass> sharedObject (object); if(object == sharedObject) return true; // 若相等
这种比较方式完全可以正确执行。
Qt的QSharedPointer类重载了operator==运算符,支持直接和原始指针做地址对比。当执行object == sharedObject时,底层会自动取出sharedObject内部管理的原始指针,和object的地址进行比较——只要两者指向同一个对象,这个判断就会返回true。
反过来写sharedObject == object也能得到相同的结果,因为运算符重载支持这种对称写法。
这种直接比较的方式简洁可靠,常用于确认某个原始指针是否被目标智能指针托管的场景。
内容的提问来源于stack exchange,提问作者Andrey Strokov
相关产品推荐
相关产品推荐

