QtBase
v6.3.1
|
The QSharedPointer class holds a strong reference to a shared pointer. More...
#include <qsharedpointer_impl.h>
Public Types | |
typedef T | Type |
typedef T | element_type |
typedef T | value_type |
typedef value_type * | pointer |
typedef const value_type * | const_pointer |
typedef value_type & | reference |
typedef const value_type & | const_reference |
typedef qptrdiff | difference_type |
Public Member Functions | |
T * | data () const noexcept |
T * | get () const noexcept |
bool | isNull () const noexcept |
operator bool () const noexcept | |
bool | operator! () const noexcept |
T & | operator* () const |
T * | operator-> () const noexcept |
constexpr | QSharedPointer () noexcept |
~QSharedPointer () | |
constexpr | QSharedPointer (std::nullptr_t) noexcept |
template<class X , IfCompatible< X > = true> | |
QSharedPointer (X *ptr) | |
template<class X , typename Deleter , IfCompatible< X > = true> | |
QSharedPointer (X *ptr, Deleter deleter) | |
template<typename Deleter > | |
QSharedPointer (std::nullptr_t, Deleter deleter) | |
QSharedPointer (const QSharedPointer &other) noexcept | |
QSharedPointer & | operator= (const QSharedPointer &other) noexcept |
QSharedPointer (QSharedPointer &&other) noexcept | |
template<class X , IfCompatible< X > = true> | |
QSharedPointer (QSharedPointer< X > &&other) noexcept | |
template<class X , IfCompatible< X > = true> | |
QSharedPointer & | operator= (QSharedPointer< X > &&other) noexcept |
template<class X , IfCompatible< X > = true> | |
QSharedPointer (const QSharedPointer< X > &other) noexcept | |
template<class X , IfCompatible< X > = true> | |
QSharedPointer & | operator= (const QSharedPointer< X > &other) |
template<class X , IfCompatible< X > = true> | |
QSharedPointer (const QWeakPointer< X > &other) | |
template<class X , IfCompatible< X > = true> | |
QSharedPointer< T > & | operator= (const QWeakPointer< X > &other) |
void | swap (QSharedPointer &other) noexcept |
void | reset () |
void | reset (T *t) |
template<typename Deleter > | |
void | reset (T *t, Deleter deleter) |
template<class X > | |
QSharedPointer< X > | staticCast () const |
template<class X > | |
QSharedPointer< X > | dynamicCast () const |
template<class X > | |
QSharedPointer< X > | constCast () const |
template<class X > | |
QSharedPointer< X > | objectCast () const |
void | clear () |
QWeakPointer< T > | toWeakRef () const |
DECLARE_TEMPLATE_COMPARE_SET (const QSharedPointer &p1, p1.data(), const QSharedPointer< X > &p2, p2.data()) private | |
void | deref () noexcept |
template<class X > | |
void | enableSharedFromThis (const QEnableSharedFromThis< X > *ptr) |
void | enableSharedFromThis (...) |
template<typename X , typename Deleter > | |
void | internalConstruct (X *ptr, Deleter deleter) |
void | internalSwap (QSharedPointer &other) noexcept |
void | ref () const noexcept |
void | internalSet (Data *o, T *actual) |
Static Public Member Functions | |
template<typename... Args> | |
static QSharedPointer | create (Args &&...arguments) |
static void | deref (Data *dd) noexcept |
Public Attributes | |
Type * | value |
Data * | d |
Friends | |
template<class X > | |
class | QSharedPointer |
template<class X > | |
class | QWeakPointer |
template<class X , class Y > | |
QSharedPointer< X > | QtSharedPointer::copyAndSetPointer (X *ptr, const QSharedPointer< Y > &src) |
Related Functions | |
(Note that these are not member functions.) | |
template< typename T > QDebug | operator<< (QDebug debug, const QSharedPointer< T > &ptr) |
template< class T > template< class X > bool | operator== (const QSharedPointer< T > &ptr1, const QSharedPointer< X > &ptr2) |
template< class T > template< class X > bool | operator!= (const QSharedPointer< T > &ptr1, const QSharedPointer< X > &ptr2) |
template< class T > template< class X > bool | operator== (const QSharedPointer< T > &ptr1, const X *ptr2) |
template< class T > template< class X > bool | operator!= (const QSharedPointer< T > &ptr1, const X *ptr2) |
template< class T > template< class X > bool | operator== (const T *ptr1, const QSharedPointer< X > &ptr2) |
template< class T > template< class X > bool | operator!= (const T *ptr1, const QSharedPointer< X > &ptr2) |
template< class T > bool | operator== (const QSharedPointer< T > &lhs, std::nullptr_t) |
template< class T > bool | operator== (std::nullptr_t, const QSharedPointer< T > &rhs) |
template< class T > bool | operator!= (const QSharedPointer< T > &lhs, std::nullptr_t) |
template< class T > bool | operator!= (std::nullptr_t, const QSharedPointer< T > &rhs) |
template< class X > template< class T > QSharedPointer< X > | qSharedPointerCast (const QSharedPointer< T > &other) |
template< class X > template< class T > QSharedPointer< X > | qSharedPointerDynamicCast (const QSharedPointer< T > &src) |
template< class X > template< class T > QSharedPointer< X > | qSharedPointerConstCast (const QSharedPointer< T > &src) |
template< class X > template< class T > QSharedPointer< X > | qSharedPointerObjectCast (const QSharedPointer< T > &src) |
The qSharedPointerObjectCast function is for casting a shared pointer. More... | |
template< class X, class T > std::shared_ptr< X > | qSharedPointerObjectCast (const std::shared_ptr< T > &src) |
template< class X, class T > std::shared_ptr< X > | qobject_pointer_cast (const std::shared_ptr< T > &src) |
template< class X, class T > std::shared_ptr< X > | qSharedPointerObjectCast (std::shared_ptr< T > &&src) |
template< class X, class T > std::shared_ptr< X > | qobject_pointer_cast (std::shared_ptr< T > &&src) |
The QSharedPointer class holds a strong reference to a shared pointer.
\inmodule QtCore
\reentrant
The QSharedPointer is an automatic, shared pointer in C++. It behaves exactly like a normal pointer for normal purposes, including respect for constness.
QSharedPointer will delete the pointer it is holding when it goes out of scope, provided no other QSharedPointer objects are referencing it.
A QSharedPointer object can be created from a normal pointer, another QSharedPointer object or by promoting a QWeakPointer object to a strong reference.
Definition at line 287 of file qsharedpointer_impl.h.
typedef const value_type* QSharedPointer< T >::const_pointer |
Definition at line 298 of file qsharedpointer_impl.h.
typedef const value_type& QSharedPointer< T >::const_reference |
Definition at line 300 of file qsharedpointer_impl.h.
typedef qptrdiff QSharedPointer< T >::difference_type |
Definition at line 301 of file qsharedpointer_impl.h.
typedef T QSharedPointer< T >::element_type |
Definition at line 295 of file qsharedpointer_impl.h.
typedef value_type* QSharedPointer< T >::pointer |
Definition at line 297 of file qsharedpointer_impl.h.
typedef value_type& QSharedPointer< T >::reference |
Definition at line 299 of file qsharedpointer_impl.h.
typedef T QSharedPointer< T >::Type |
Definition at line 294 of file qsharedpointer_impl.h.
typedef T QSharedPointer< T >::value_type |
Definition at line 296 of file qsharedpointer_impl.h.
|
inlineconstexprnoexcept |
Definition at line 311 of file qsharedpointer_impl.h.
|
inline |
Destroys this QSharedPointer object. If it is the last reference to the pointer stored, this will delete the pointer as well.
Definition at line 312 of file qsharedpointer_impl.h.
|
inlineconstexprnoexcept |
Creates a QSharedPointer that is null. This is equivalent to the QSharedPointer default constructor.
Definition at line 314 of file qsharedpointer_impl.h.
|
inlineexplicit |
Creates a QSharedPointer that points to ptr. The pointer ptr becomes managed by this QSharedPointer and must not be passed to another QSharedPointer object or deleted outside this object.
Since Qt 5.8, when the last reference to this QSharedPointer gets destroyed, ptr will be deleted by calling X's
destructor (even if X
is not the same as QSharedPointer's template parameter T
). Previously, the destructor for T
was called.
Definition at line 317 of file qsharedpointer_impl.h.
|
inline |
Creates a QSharedPointer that points to ptr. The pointer ptr becomes managed by this QSharedPointer and must not be passed to another QSharedPointer object or deleted outside this object.
The deleter parameter d specifies the custom deleter for this object. The custom deleter is called, instead of the operator delete(), when the strong reference count drops to 0. This is useful, for instance, for calling \l {QObject::}{deleteLater()} on a QObject instead:
Note that the custom deleter function will be called with a pointer to type X
, even if the QSharedPointer template parameter T
is not the same.
It is also possible to specify a member function directly, as in:
Definition at line 321 of file qsharedpointer_impl.h.
|
inline |
Creates a QSharedPointer that is null. This is equivalent to the QSharedPointer default constructor.
The deleter parameter d specifies the custom deleter for this object. The custom deleter is called, instead of the operator delete(), when the strong reference count drops to 0.
Definition at line 325 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Creates a QSharedPointer object that shares other's pointer.
If \tt T is a derived type of the template parameter of this class, QSharedPointer will perform an automatic cast. Otherwise, you will get a compiler error.
Definition at line 328 of file qsharedpointer_impl.h.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inline |
Clears this QSharedPointer object, dropping the reference that it may have had to the pointer. If this was the last reference, then the pointer itself will be deleted.
Definition at line 416 of file qsharedpointer_impl.h.
|
inline |
Performs a \tt const_cast from this pointer's type to \tt X and returns a QSharedPointer that shares the reference. This function can be used for up- and for down-casting, but is more useful for up-casting.
Definition at line 403 of file qsharedpointer_impl.h.
|
inlinestatic |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Creates a QSharedPointer object and allocates a new item of type \tt T. The QSharedPointer internals and the object are allocated in one single memory allocation, which could help reduce memory fragmentation in a long-running application.
This function will attempt to call a constructor for type \tt T that can accept all the arguments passed (args). Arguments will be perfectly-forwarded.
Definition at line 421 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Returns the value of the pointer referenced by this object.
Note: do not delete the pointer returned by this function or pass it to another function that could delete it, including creating QSharedPointer or QWeakPointer objects.
Definition at line 303 of file qsharedpointer_impl.h.
|
inline |
Definition at line 460 of file qsharedpointer_impl.h.
|
inlinenoexcept |
|
inlinestaticnoexcept |
Definition at line 473 of file qsharedpointer_impl.h.
|
inline |
Performs a dynamic cast from this pointer's type to \tt X and returns a QSharedPointer that shares the reference. If this function is used to up-cast, then QSharedPointer will perform a \tt dynamic_cast, which means that if the object being pointed by this QSharedPointer is not of type \tt X, the returned object will be null.
Note: the template type X
must have the same const and volatile qualifiers as the template of this object, or the cast will fail. Use constCast() if you need to drop those qualifiers.
Definition at line 397 of file qsharedpointer_impl.h.
|
inline |
Definition at line 489 of file qsharedpointer_impl.h.
|
inline |
Definition at line 484 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Same as data().
This function is provided for API compatibility with {std::shared_ptr}.
Definition at line 304 of file qsharedpointer_impl.h.
|
inline |
|
inline |
Definition at line 520 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Definition at line 509 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Returns true
if this object refers to \nullptr.
Definition at line 305 of file qsharedpointer_impl.h.
|
inline |
Performs a \l qobject_cast() from this pointer's type to \tt X and returns a QSharedPointer that shares the reference. If this function is used to up-cast, then QSharedPointer will perform a \tt qobject_cast, which means that if the object being pointed by this QSharedPointer is not of type \tt X, the returned object will be null.
Note: the template type X
must have the same const and volatile qualifiers as the template of this object, or the cast will fail. Use constCast() if you need to drop those qualifiers.
Definition at line 410 of file qsharedpointer_impl.h.
|
inlineexplicitnoexcept |
Returns true
if the contained pointer is not \nullptr. This function is suitable for use in \tt if-constructs, like:
Definition at line 306 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Returns true
if this object refers to \nullptr. This function is suitable for use in \tt if-constructs, like:
Definition at line 307 of file qsharedpointer_impl.h.
|
inline |
Provides access to the shared pointer's members.
If the contained pointer is \nullptr, behavior is undefined.
Definition at line 308 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Provides access to the shared pointer's members.
If the contained pointer is \nullptr, behavior is undefined.
Definition at line 309 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Makes this object share other's pointer. The current pointer reference is discarded and, if it was the last, the pointer will be deleted.
If \tt T is a derived type of the template parameter of this class, QSharedPointer will perform an automatic cast. Otherwise, you will get a compiler error.
Definition at line 330 of file qsharedpointer_impl.h.
|
inline |
Definition at line 365 of file qsharedpointer_impl.h.
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
Definition at line 518 of file qsharedpointer_impl.h.
|
inline |
Same as clear(). For std::shared_ptr compatibility.
Definition at line 383 of file qsharedpointer_impl.h.
Resets this QSharedPointer object to point to t instead. Equivalent to:
Definition at line 384 of file qsharedpointer_impl.h.
|
inline |
Resets this QSharedPointer object to point to t instead, with the Deleter deleter. Equivalent to:
Definition at line 387 of file qsharedpointer_impl.h.
|
inline |
Performs a static cast from this pointer's type to \tt X and returns a QSharedPointer that shares the reference. This function can be used for up- and for down-casting, but is more useful for up-casting.
Note: the template type X
must have the same const and volatile qualifiers as the template of this object, or the cast will fail. Use constCast() if you need to drop those qualifiers.
Definition at line 391 of file qsharedpointer_impl.h.
|
inlinenoexcept |
Swaps this shared pointer instance with other. This function is very fast and never fails.
Definition at line 380 of file qsharedpointer_impl.h.
Q_INLINE_TEMPLATE QWeakPointer< T > QSharedPointer< T >::toWeakRef |
Returns a weak reference object that shares the pointer referenced by this object.
Definition at line 810 of file qsharedpointer_impl.h.
|
related |
Returns true
if lhs refers to a valid (i.e. non-null) pointer.
|
related |
Returns true
if ptr1 and ptr2 refer to distinct pointers.
If ptr2's template parameter is different from ptr1's, QSharedPointer will attempt to perform an automatic \tt static_cast to ensure that the pointers being compared are equal. If ptr2's template parameter is not a base or a derived type from ptr1's, you will get a compiler error.
|
related |
Returns true
if ptr1 and ptr2 refer to distinct pointers.
If ptr2's type is different from ptr1's, QSharedPointer will attempt to perform an automatic \tt static_cast to ensure that the pointers being compared are equal. If ptr2's type is not a base or a derived type from this ptr1's, you will get a compiler error.
|
related |
Returns true
if the pointer ptr1 is not the same pointer as that referenced by ptr2.
If ptr2's template parameter is different from ptr1's type, QSharedPointer will attempt to perform an automatic \tt static_cast to ensure that the pointers being compared are equal. If ptr2's template parameter is not a base or a derived type from ptr1's type, you will get a compiler error.
|
related |
Returns true
if rhs refers to a valid (i.e. non-null) pointer.
|
related |
|
related |
Returns true
if ptr1 and ptr2 refer to the same pointer.
If ptr2's template parameter is different from ptr1's, QSharedPointer will attempt to perform an automatic \tt static_cast to ensure that the pointers being compared are equal. If ptr2's template parameter is not a base or a derived type from ptr1's, you will get a compiler error.
|
related |
Returns true
if ptr1 and ptr2 refer to the same pointer.
If ptr2's type is different from ptr1's, QSharedPointer will attempt to perform an automatic \tt static_cast to ensure that the pointers being compared are equal. If ptr2's type is not a base or a derived type from this ptr1's, you will get a compiler error.
|
related |
Returns true
if the pointer ptr1 is the same pointer as that referenced by ptr2.
If ptr2's template parameter is different from ptr1's type, QSharedPointer will attempt to perform an automatic \tt static_cast to ensure that the pointers being compared are equal. If ptr2's template parameter is not a base or a derived type from ptr1's type, you will get a compiler error.
|
related |
|
related |
Returns a shared pointer to the pointer held by src.
Same as qSharedPointerObjectCast(). This function is provided for STL compatibility.
Definition at line 924 of file qsharedpointer_impl.h.
|
related |
Same as qSharedPointerObjectCast(). This function is provided for STL compatibility.
Definition at line 931 of file qsharedpointer_impl.h.
|
friend |
Creates a QSharedPointer that is null (the object is holding a reference to \nullptr).
Definition at line 515 of file qsharedpointer_impl.h.
|
related |
Returns a shared pointer to the pointer held by other, cast to type \tt X. The types \tt T and \tt X must belong to one hierarchy for the \tt static_cast to succeed.
Note that \tt X must have the same cv-qualifiers (\tt const and \tt volatile) that \tt T has, or the code will fail to compile. Use qSharedPointerConstCast to cast away the constness.
|
related |
|
related |
Returns a shared pointer to the pointer held by src, using a dynamic cast to type \tt X to obtain an internal pointer of the appropriate type. If the \tt dynamic_cast fails, the object returned will be null.
Note that \tt X must have the same cv-qualifiers (\tt const and \tt volatile) that \tt T has, or the code will fail to compile. Use qSharedPointerConstCast to cast away the constness.
|
related |
The qSharedPointerObjectCast function is for casting a shared pointer.
Returns a shared pointer to the pointer held by src, using a \l qobject_cast() to type \tt X to obtain an internal pointer of the appropriate type. If the \tt qobject_cast fails, the object returned will be null.
Note that \tt X must have the same cv-qualifiers (\tt const and \tt volatile) that \tt T has, or the code will fail to compile. Use qSharedPointerConstCast to cast away the constness.
|
related |
Returns a shared pointer to the pointer held by src, using a \l qobject_cast() to type \tt X to obtain an internal pointer of the appropriate type. If the \tt qobject_cast fails, the object returned will be null.
Note that \tt X must have the same cv-qualifiers (\tt const and \tt volatile) that \tt T has, or the code will fail to compile. Use const_pointer_cast to cast away the constness.
Definition at line 946 of file qsharedpointer_impl.h.
|
related |
Returns a shared pointer to the pointer held by src, using a \l qobject_cast() to type \tt X to obtain an internal pointer of the appropriate type.
If the \tt qobject_cast succeeds, the function will return a valid shared pointer, and src is reset to null. If the \tt qobject_cast fails, the object returned will be null, and src will not be modified.
Note that \tt X must have the same cv-qualifiers (\tt const and \tt volatile) that \tt T has, or the code will fail to compile. Use const_pointer_cast to cast away the constness.
Definition at line 952 of file qsharedpointer_impl.h.
|
friend |
Definition at line 516 of file qsharedpointer_impl.h.
Data* QSharedPointer< T >::d |
Definition at line 551 of file qsharedpointer_impl.h.
Type* QSharedPointer< T >::value |
Definition at line 550 of file qsharedpointer_impl.h.