QVariant是Qt框架中的一个类,用于在不同的数据类型之间进行转换和存储。它可以存储任意类型的数据,并且可以在需要时进行类型转换。
在Qt中,QVariant类的实例通常是通过值传递的,这意味着当我们将一个QVariant对象赋值给另一个变量时,实际上是将数据复制到新的变量中。因此,如果我们使用QVariant来存储自定义类指针,每次复制QVariant对象时,它们将指向不同的地址。
这是因为QVariant类的设计初衷是为了处理值类型数据,而不是指针类型数据。当我们将指针存储在QVariant中时,它只是存储了指针的值,而不是指向的实际对象。因此,每次复制QVariant对象时,它们只是复制了指针的值,而不是指向的对象。
如果我们希望在QVariant中存储指针,并且希望复制QVariant对象时指针仍然指向同一个对象,我们可以使用QSharedPointer类或者手动管理内存来实现。QSharedPointer是Qt提供的智能指针类,它可以在多个QVariant对象之间共享指针,并且会自动管理内存释放。
总结起来,具有自定义类指针的QVariant不会返回相同的地址,因为QVariant是通过值传递的,每次复制QVariant对象时,它们只是复制了指针的值,而不是指向的对象。如果需要在QVariant中存储指针并保持相同的地址,可以考虑使用QSharedPointer或手动管理内存。
领取专属 10元无门槛券
手把手带您无忧上云