<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- qscopedpointer.cpp --> <title>QScopedPointer Class | Qt Core 5.12.6</title> <link rel="stylesheet" type="text/css" href="style/offline-simple.css" /> <script type="text/javascript"> document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css"); // loading style sheet breaks anchors that were jumped to before // so force jumping to anchor again setTimeout(function() { var anchor = location.hash; // need to jump to different anchor first (e.g. none) location.hash = "#"; setTimeout(function() { location.hash = anchor; }, 0); }, 0); </script> </head> <body> <div class="header" id="qtdocheader"> <div class="main"> <div class="main-rounded"> <div class="navigationbar"> <table><tr> <td >Qt 5.12</td><td ><a href="qtcore-index.html">Qt Core</a></td><td ><a href="qtcore-module.html">C++ Classes</a></td><td >QScopedPointer</td></tr></table><table class="buildversion"><tr> <td id="buildversion" width="100%" align="right"><a href="qtcore-index.html">Qt 5.12.6 Reference Documentation</a></td> </tr></table> </div> </div> <div class="content"> <div class="line"> <div class="content mainContent"> <div class="sidebar"> <div class="toc"> <h3><a name="toc">Contents</a></h3> <ul> <li class="level1"><a href="#public-functions">Public Functions</a></li> <li class="level1"><a href="#protected-variables">Protected Variables</a></li> <li class="level1"><a href="#related-non-members">Related Non-Members</a></li> <li class="level1"><a href="#details">Detailed Description</a></li> <li class="level2"><a href="#custom-cleanup-handlers">Custom Cleanup Handlers</a></li> <li class="level2"><a href="#forward-declared-pointers">Forward Declared Pointers</a></li> </ul> </div> <div class="sidebar-content" id="sidebar-content"></div></div> <h1 class="title">QScopedPointer Class</h1> <!-- $$$QScopedPointer-brief --> <p>The <a href="qscopedpointer.html">QScopedPointer</a> class stores a pointer to a dynamically allocated object, and deletes it upon destruction. <a href="#details">More...</a></p> <!-- @@@QScopedPointer --> <div class="table"><table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> Header:</td><td class="memItemRight bottomAlign"> <span class="preprocessor">#include <QScopedPointer></span> </td></tr><tr><td class="memItemLeft rightAlign topAlign"> qmake:</td><td class="memItemRight bottomAlign"> QT += core</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Since:</td><td class="memItemRight bottomAlign"> Qt 4.6</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Inherited By:</td><td class="memItemRight bottomAlign"> <p><a href="qscopedarraypointer.html">QScopedArrayPointer</a></p> </td></tr></table></div><ul> <li><a href="qscopedpointer-members.html">List of all members, including inherited members</a></li> </ul> <p><b>Note:</b> All functions in this class are reentrant.</p> <a name="public-functions"></a> <h2 id="public-functions">Public Functions</h2> <div class="table"><table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></b>(T *<i>p</i> = ...)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#dtor.QScopedPointer">~QScopedPointer</a></b>()</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> T *</td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#data">data</a></b>() const</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> T *</td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#get">get</a></b>() const</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#isNull">isNull</a></b>() const</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#reset">reset</a></b>(T *<i>other</i> = ...)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#swap">swap</a></b>(QScopedPointer<T, Cleanup> &<i>other</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> T *</td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#take">take</a></b>()</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#operator-bool">operator bool</a></b>() const</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#operator-not">operator!</a></b>() const</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> T &</td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#operator-2a">operator*</a></b>() const</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> T *</td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#operator--gt">operator-></a></b>() const</td></tr> </table></div> <a name="protected-variables"></a> <h2 id="protected-variables">Protected Variables</h2> <div class="table"><table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> T *</td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#d-var">d</a></b></td></tr> </table></div> <a name="related-non-members"></a> <h2 id="related-non-members">Related Non-Members</h2> <div class="table"><table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#operator-not-eq">operator!=</a></b>(const QScopedPointer<T, Cleanup> &<i>lhs</i>, <i>std::nullptr_t</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#operator-not-eq-1">operator!=</a></b>(<i>std::nullptr_t</i>, const QScopedPointer<T, Cleanup> &<i>rhs</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#operator-eq-eq">operator==</a></b>(const QScopedPointer<T, Cleanup> &<i>lhs</i>, <i>std::nullptr_t</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qscopedpointer.html#operator-eq-eq-1">operator==</a></b>(<i>std::nullptr_t</i>, const QScopedPointer<T, Cleanup> &<i>rhs</i>)</td></tr> </table></div> <a name="details"></a> <!-- $$$QScopedPointer-description --> <div class="descr"> <h2 id="details">Detailed Description</h2> <p>The <a href="qscopedpointer.html">QScopedPointer</a> class stores a pointer to a dynamically allocated object, and deletes it upon destruction.</p> <p>Managing heap allocated objects manually is hard and error prone, with the common result that code leaks memory and is hard to maintain. <a href="qscopedpointer.html">QScopedPointer</a> is a small utility class that heavily simplifies this by assigning stack-based memory ownership to heap allocations, more generally called resource acquisition is initialization(RAII).</p> <p><a href="qscopedpointer.html">QScopedPointer</a> guarantees that the object pointed to will get deleted when the current scope disappears.</p> <p>Consider this function which does heap allocations, and has various exit points:</p> <pre class="cpp"> <span class="type">void</span> myFunction(bool useSubClass) { MyClass <span class="operator">*</span>p <span class="operator">=</span> useSubClass <span class="operator">?</span> <span class="keyword">new</span> MyClass() : <span class="keyword">new</span> MySubClass; <span class="type"><a href="qiodevice.html">QIODevice</a></span> <span class="operator">*</span>device <span class="operator">=</span> handsOverOwnership(); <span class="keyword">if</span> (m_value <span class="operator">></span> <span class="number">3</span>) { <span class="keyword">delete</span> p; <span class="keyword">delete</span> device; <span class="keyword">return</span>; } <span class="keyword">try</span> { process(device); } <span class="keyword">catch</span> (<span class="operator">.</span><span class="operator">.</span><span class="operator">.</span>) { <span class="keyword">delete</span> p; <span class="keyword">delete</span> device; <span class="keyword">throw</span>; } <span class="keyword">delete</span> p; <span class="keyword">delete</span> device; } </pre> <p>It's encumbered by the manual delete calls. With <a href="qscopedpointer.html">QScopedPointer</a>, the code can be simplified to:</p> <pre class="cpp"> <span class="type">void</span> myFunction(bool useSubClass) { <span class="comment">// assuming that MyClass has a virtual destructor</span> <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span>MyClass<span class="operator">></span> p(useSubClass <span class="operator">?</span> <span class="keyword">new</span> MyClass() : <span class="keyword">new</span> MySubClass); <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span><span class="type"><a href="qiodevice.html">QIODevice</a></span><span class="operator">></span> device(handsOverOwnership()); <span class="keyword">if</span> (m_value <span class="operator">></span> <span class="number">3</span>) <span class="keyword">return</span>; process(device); } </pre> <p>The code the compiler generates for <a href="qscopedpointer.html">QScopedPointer</a> is the same as when writing it manually. Code that makes use of <i>delete</i> are candidates for <a href="qscopedpointer.html">QScopedPointer</a> usage (and if not, possibly another type of smart pointer such as <a href="qsharedpointer.html">QSharedPointer</a>). <a href="qscopedpointer.html">QScopedPointer</a> intentionally has no copy constructor or assignment operator, such that ownership and lifetime is clearly communicated.</p> <p>The const qualification on a regular C++ pointer can also be expressed with a <a href="qscopedpointer.html">QScopedPointer</a>:</p> <pre class="cpp"> <span class="keyword">const</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span> <span class="operator">*</span><span class="keyword">const</span> p <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span>(); <span class="comment">// is equivalent to:</span> <span class="keyword">const</span> <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span><span class="keyword">const</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span><span class="operator">></span> p(<span class="keyword">new</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span>()); <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span> <span class="operator">*</span><span class="keyword">const</span> p <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span>(); <span class="comment">// is equivalent to:</span> <span class="keyword">const</span> <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span><span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span><span class="operator">></span> p(<span class="keyword">new</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span>()); <span class="keyword">const</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span> <span class="operator">*</span>p <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span>(); <span class="comment">// is equivalent to:</span> <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span><span class="keyword">const</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span><span class="operator">></span> p(<span class="keyword">new</span> <span class="type"><a href="../qtwidgets/qwidget.html">QWidget</a></span>()); </pre> <a name="custom-cleanup-handlers"></a> <h3 >Custom Cleanup Handlers</h3> <p>Arrays as well as pointers that have been allocated with <code>malloc</code> must not be deleted using <code>delete</code>. <a href="qscopedpointer.html">QScopedPointer</a>'s second template parameter can be used for custom cleanup handlers.</p> <p>The following custom cleanup handlers exist:</p> <ul> <li>QScopedPointerDeleter - the default, deletes the pointer using <code>delete</code></li> <li>QScopedPointerArrayDeleter - deletes the pointer using <code>delete []</code>. Use this handler for pointers that were allocated with <code>new []</code>.</li> <li>QScopedPointerPodDeleter - deletes the pointer using <code>free()</code>. Use this handler for pointers that were allocated with <code>malloc()</code>.</li> <li>QScopedPointerDeleteLater - deletes a pointer by calling <code>deleteLater()</code> on it. Use this handler for pointers to <a href="qobject.html">QObject</a>'s that are actively participating in a <a href="qeventloop.html">QEventLoop</a>.</li> </ul> <p>You can pass your own classes as handlers, provided that they have a public static function <code>void cleanup(T *pointer)</code>.</p> <pre class="cpp"> <span class="comment">// this QScopedPointer deletes its data using the delete[] operator:</span> <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span><span class="type">int</span><span class="operator">,</span> <span class="type">QScopedPointerArrayDeleter</span><span class="operator"><</span><span class="type">int</span><span class="operator">></span> <span class="operator">></span> arrayPointer(<span class="keyword">new</span> <span class="type">int</span><span class="operator">[</span><span class="number">42</span><span class="operator">]</span>); <span class="comment">// this QScopedPointer frees its data using free():</span> <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span><span class="type">int</span><span class="operator">,</span> <span class="type">QScopedPointerPodDeleter</span><span class="operator">></span> podPointer(<span class="keyword">reinterpret_cast</span><span class="operator"><</span><span class="type">int</span> <span class="operator">*</span><span class="operator">></span>(malloc(<span class="number">42</span>))); <span class="comment">// this struct calls "myCustomDeallocator" to delete the pointer</span> <span class="keyword">struct</span> ScopedPointerCustomDeleter { <span class="keyword">static</span> <span class="keyword">inline</span> <span class="type">void</span> cleanup(MyCustomClass <span class="operator">*</span>pointer) { myCustomDeallocator(pointer); } }; <span class="comment">// QScopedPointer using a custom deleter:</span> <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span>MyCustomClass<span class="operator">,</span> ScopedPointerCustomDeleter<span class="operator">></span> customPointer(<span class="keyword">new</span> MyCustomClass); </pre> <a name="forward-declared-pointers"></a> <h3 >Forward Declared Pointers</h3> <p>Classes that are forward declared can be used within <a href="qscopedpointer.html">QScopedPointer</a>, as long as the destructor of the forward declared class is available whenever a <a href="qscopedpointer.html">QScopedPointer</a> needs to clean up.</p> <p>Concretely, this means that all classes containing a <a href="qscopedpointer.html">QScopedPointer</a> that points to a forward declared class must have non-inline constructors, destructors and assignment operators:</p> <pre class="cpp"> <span class="keyword">class</span> MyPrivateClass; <span class="comment">// forward declare MyPrivateClass</span> <span class="keyword">class</span> MyClass { <span class="keyword">private</span>: <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><span class="operator"><</span>MyPrivateClass<span class="operator">></span> privatePtr; <span class="comment">// QScopedPointer to forward declared class</span> <span class="keyword">public</span>: MyClass(); <span class="comment">// OK</span> <span class="keyword">inline</span> <span class="operator">~</span>MyClass() {} <span class="comment">// VIOLATION - Destructor must not be inline</span> <span class="keyword">private</span>: Q_DISABLE_COPY(MyClass) <span class="comment">// OK - copy constructor and assignment operators</span> <span class="comment">// are now disabled, so the compiler won't implicitely</span> <span class="comment">// generate them.</span> }; </pre> <p>Otherwise, the compiler outputs a warning about not being able to destruct <code>MyPrivateClass</code>.</p> </div> <p><b>See also </b><a href="qsharedpointer.html">QSharedPointer</a>.</p> <!-- @@@QScopedPointer --> <div class="func"> <h2>Member Function Documentation</h2> <!-- $$$QScopedPointer[overload1]$$$QScopedPointerT* --> <h3 class="fn" id="QScopedPointer"><a name="QScopedPointer"></a>QScopedPointer::<span class="name">QScopedPointer</span>(<span class="type">T</span> *<i>p</i> = ...)</h3> <p>Constructs this <a href="qscopedpointer.html">QScopedPointer</a> instance and sets its pointer to <i>p</i>.</p> <!-- @@@QScopedPointer --> <!-- $$$~QScopedPointer[overload1]$$$~QScopedPointer --> <h3 class="fn" id="dtor.QScopedPointer"><a name="dtor.QScopedPointer"></a>QScopedPointer::<span class="name">~QScopedPointer</span>()</h3> <p>Destroys this <a href="qscopedpointer.html">QScopedPointer</a> object. Delete the object its pointer points to.</p> <!-- @@@~QScopedPointer --> <!-- $$$data[overload1]$$$data --> <h3 class="fn" id="data"><a name="data"></a><span class="type">T</span> *QScopedPointer::<span class="name">data</span>() const</h3> <p>Returns the value of the pointer referenced by this object. <a href="qscopedpointer.html">QScopedPointer</a> still owns the object pointed to.</p> <!-- @@@data --> <!-- $$$get[overload1]$$$get --> <h3 class="fn" id="get"><a name="get"></a><span class="type">T</span> *QScopedPointer::<span class="name">get</span>() const</h3> <p>Same as <a href="qscopedpointer.html#data">data</a>().</p> <p>This function was introduced in Qt 5.11.</p> <!-- @@@get --> <!-- $$$isNull[overload1]$$$isNull --> <h3 class="fn" id="isNull"><a name="isNull"></a><span class="type">bool</span> QScopedPointer::<span class="name">isNull</span>() const</h3> <p>Returns <code>true</code> if this object is holding a pointer that is <code>null</code>.</p> <!-- @@@isNull --> <!-- $$$reset[overload1]$$$resetT* --> <h3 class="fn" id="reset"><a name="reset"></a><span class="type">void</span> QScopedPointer::<span class="name">reset</span>(<span class="type">T</span> *<i>other</i> = ...)</h3> <p>Deletes the existing object it is pointing to (if any), and sets its pointer to <i>other</i>. <a href="qscopedpointer.html">QScopedPointer</a> now owns <i>other</i> and will delete it in its destructor.</p> <p>To clear the pointer held without deleting the object it points to (and hence take ownership of the object), use <a href="qscopedpointer.html#take">take</a>() instead.</p> <!-- @@@reset --> <!-- $$$swap[overload1]$$$swapQScopedPointer<T,Cleanup>& --> <h3 class="fn" id="swap"><a name="swap"></a><span class="type">void</span> QScopedPointer::<span class="name">swap</span>(<span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><<span class="type">T</span>, <span class="type">Cleanup</span>> &<i>other</i>)</h3> <p>Swap this pointer with <i>other</i>.</p> <!-- @@@swap --> <!-- $$$take[overload1]$$$take --> <h3 class="fn" id="take"><a name="take"></a><span class="type">T</span> *QScopedPointer::<span class="name">take</span>()</h3> <p>Returns the value of the pointer referenced by this object. The pointer of this <a href="qscopedpointer.html">QScopedPointer</a> object will be reset to <code>null</code>.</p> <p>Callers of this function take ownership of the pointer.</p> <!-- @@@take --> <!-- $$$operator bool[overload1]$$$operator bool --> <h3 class="fn" id="operator-bool"><a name="operator-bool"></a><span class="type">bool</span> QScopedPointer::<span class="name">operator bool</span>() const</h3> <p>Returns <code>true</code> if this object is not <code>null</code>. This function is suitable for use in <code>if-constructs</code>, like:</p> <pre class="cpp"> <span class="keyword">if</span> (scopedPointer) { <span class="operator">.</span><span class="operator">.</span><span class="operator">.</span> } </pre> <p><b>See also </b><a href="qscopedpointer.html#isNull">isNull</a>().</p> <!-- @@@operator bool --> <!-- $$$operator![overload1]$$$operator! --> <h3 class="fn" id="operator-not"><a name="operator-not"></a><span class="type">bool</span> QScopedPointer::<span class="name">operator!</span>() const</h3> <p>Returns <code>true</code> if the pointer referenced by this object is <code>null</code>, otherwise returns <code>false</code>.</p> <p><b>See also </b><a href="qscopedpointer.html#isNull">isNull</a>().</p> <!-- @@@operator! --> <!-- $$$operator*[overload1]$$$operator* --> <h3 class="fn" id="operator-2a"><a name="operator-2a"></a><span class="type">T</span> &QScopedPointer::<span class="name">operator*</span>() const</h3> <p>Provides access to the scoped pointer's object.</p> <p>If the contained pointer is <code>null</code>, behavior is undefined.</p> <p><b>See also </b><a href="qscopedpointer.html#isNull">isNull</a>().</p> <!-- @@@operator* --> <!-- $$$operator->[overload1]$$$operator-> --> <h3 class="fn" id="operator--gt"><a name="operator--gt"></a><span class="type">T</span> *QScopedPointer::<span class="name">operator-></span>() const</h3> <p>Provides access to the scoped pointer's object.</p> <p>If the contained pointer is <code>null</code>, behavior is undefined.</p> <p><b>See also </b><a href="qscopedpointer.html#isNull">isNull</a>().</p> <!-- @@@operator-> --> </div> <div class="relnonmem"> <h2>Related Non-Members</h2> <!-- $$$operator!=[overload1]$$$operator!=constQScopedPointer<T,Cleanup>&std::nullptr_t --> <h3 class="fn" id="operator-not-eq"><a name="operator-not-eq"></a><span class="type">bool</span> <span class="name">operator!=</span>(const <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><<span class="type">T</span>, <span class="type">Cleanup</span>> &<i>lhs</i>, <i>std::nullptr_t</i>)</h3> <p>Returns <code>true</code> if the scoped pointer <i>lhs</i> is a valid (i.e. a non-null) pointer.</p> <p>This function was introduced in Qt 5.8.</p> <p><b>See also </b><a href="qscopedpointer.html#isNull">QScopedPointer::isNull</a>().</p> <!-- @@@operator!= --> <!-- $$$operator!=$$$operator!=std::nullptr_tconstQScopedPointer<T,Cleanup>& --> <h3 class="fn" id="operator-not-eq-1"><a name="operator-not-eq-1"></a><span class="type">bool</span> <span class="name">operator!=</span>(<i>std::nullptr_t</i>, const <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><<span class="type">T</span>, <span class="type">Cleanup</span>> &<i>rhs</i>)</h3> <p>Returns <code>true</code> if the scoped pointer <i>rhs</i> is a valid (i.e. a non-null) pointer.</p> <p>This function was introduced in Qt 5.8.</p> <p><b>See also </b><a href="qscopedpointer.html#isNull">QScopedPointer::isNull</a>().</p> <!-- @@@operator!= --> <!-- $$$operator==[overload1]$$$operator==constQScopedPointer<T,Cleanup>&std::nullptr_t --> <h3 class="fn" id="operator-eq-eq"><a name="operator-eq-eq"></a><span class="type">bool</span> <span class="name">operator==</span>(const <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><<span class="type">T</span>, <span class="type">Cleanup</span>> &<i>lhs</i>, <i>std::nullptr_t</i>)</h3> <p>Returns <code>true</code> if the scoped pointer <i>lhs</i> is a null pointer.</p> <p>This function was introduced in Qt 5.8.</p> <p><b>See also </b><a href="qscopedpointer.html#isNull">QScopedPointer::isNull</a>().</p> <!-- @@@operator== --> <!-- $$$operator==$$$operator==std::nullptr_tconstQScopedPointer<T,Cleanup>& --> <h3 class="fn" id="operator-eq-eq-1"><a name="operator-eq-eq-1"></a><span class="type">bool</span> <span class="name">operator==</span>(<i>std::nullptr_t</i>, const <span class="type"><a href="qscopedpointer.html#QScopedPointer">QScopedPointer</a></span><<span class="type">T</span>, <span class="type">Cleanup</span>> &<i>rhs</i>)</h3> <p>Returns <code>true</code> if the scoped pointer <i>rhs</i> is a null pointer.</p> <p>This function was introduced in Qt 5.8.</p> <p><b>See also </b><a href="qscopedpointer.html#isNull">QScopedPointer::isNull</a>().</p> <!-- @@@operator== --> </div> </div> </div> </div> </div> </div> <div class="footer"> <p> <acronym title="Copyright">©</acronym> 2019 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners.<br/> The documentation provided herein is licensed under the terms of the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License version 1.3</a> as published by the Free Software Foundation.<br/> Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners. </p> </div> </body> </html>