<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Klarheiten schaffen: Scope]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich benutze innerhalb einer Klasse einen Smartpointer, der laut MSDN</p>
<blockquote>
<p>&quot;automatically call IUnknown::Release when the smart pointer goes out of scope&quot;</p>
</blockquote>
<p>Nun frage ich mich aber, wann der Scope genau endet.</p>
<pre><code class="language-cpp">class A
{
   A()
   {
      CreateObject(&amp;test);
   }
   IXRFrameworkElementPtr test; // Smartpointer
};
</code></pre>
<p>In dem Beispiel beginnt meiner Auffassung nach der Scope, sobald ich ein Objekt der Klasse A erstelle. Enden tut er, sobald der Destruktor von A aufgerufen wird, also A zerstört wird. Also ist der scope vom SmartPointer 1:1 an das Objekt der Klasse A gekoppelt (wenn ich nicht explizit an anderer Stelle nur den Smartpointer zerstöre)?!</p>
<p>Das heißt aber auch, wenn ich ein Objekt inst von A irgendwo im Heap angelegt habe, bleibt mein Smartpointer auch für die Existenz von inst bestehen, bis ich inst explizit mit delete(inst) zerstöre?!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284971/klarheiten-schaffen-scope</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 17:57:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284971.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Apr 2011 08:49:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klarheiten schaffen: Scope on Tue, 12 Apr 2011 08:49:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich benutze innerhalb einer Klasse einen Smartpointer, der laut MSDN</p>
<blockquote>
<p>&quot;automatically call IUnknown::Release when the smart pointer goes out of scope&quot;</p>
</blockquote>
<p>Nun frage ich mich aber, wann der Scope genau endet.</p>
<pre><code class="language-cpp">class A
{
   A()
   {
      CreateObject(&amp;test);
   }
   IXRFrameworkElementPtr test; // Smartpointer
};
</code></pre>
<p>In dem Beispiel beginnt meiner Auffassung nach der Scope, sobald ich ein Objekt der Klasse A erstelle. Enden tut er, sobald der Destruktor von A aufgerufen wird, also A zerstört wird. Also ist der scope vom SmartPointer 1:1 an das Objekt der Klasse A gekoppelt (wenn ich nicht explizit an anderer Stelle nur den Smartpointer zerstöre)?!</p>
<p>Das heißt aber auch, wenn ich ein Objekt inst von A irgendwo im Heap angelegt habe, bleibt mein Smartpointer auch für die Existenz von inst bestehen, bis ich inst explizit mit delete(inst) zerstöre?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047890</guid><dc:creator><![CDATA[neu_hier]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to Klarheiten schaffen: Scope on Tue, 12 Apr 2011 09:00:52 GMT]]></title><description><![CDATA[<p>neu_hier schrieb:</p>
<blockquote>
<p>Also ist der scope vom SmartPointer 1:1 an das Objekt der Klasse A gekoppelt</p>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>(wenn ich nicht explizit an anderer Stelle nur den Smartpointer zerstöre)?!</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Was willst du tun? Einzelne Member einer Klasse zerstören? Lass das mal lieber bleiben.</p>
<blockquote>
<p>Das heißt aber auch, wenn ich ein Objekt inst von A irgendwo im Heap angelegt habe, bleibt mein Smartpointer auch für die Existenz von inst bestehen, bis ich inst explizit mit delete(inst) zerstöre?!</p>
</blockquote>
<p>Ja.</p>
<p>edit: Dein Smartpointer klingt von der Funktionalität her übrigens genau wie der auot_ptr aus der Standardbibliothek. Warum in die Ferne schweifen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047892</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 12 Apr 2011 09:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klarheiten schaffen: Scope on Tue, 12 Apr 2011 08:58:06 GMT]]></title><description><![CDATA[<p>neu_hier schrieb:</p>
<blockquote>
<p>Also ist der scope vom SmartPointer 1:1 an das Objekt der Klasse A gekoppelt (wenn ich nicht explizit an anderer Stelle nur den Smartpointer zerstöre)?!</p>
<p>Das heißt aber auch, wenn ich ein Objekt inst von A irgendwo im Heap angelegt habe, bleibt mein Smartpointer auch für die Existenz von inst bestehen, bis ich inst explizit mit delete(inst) zerstöre?!</p>
</blockquote>
<p>Beides ja.</p>
<p>MfG, EOutOfResources</p>
<p>EDIT: Ja, einzelne Member eben nicht und es sollte <code>delete</code> (ptr) statt <code>delete</code> (inst) heissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047894</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Klarheiten schaffen: Scope on Tue, 12 Apr 2011 08:57:25 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<blockquote>
<p>(wenn ich nicht explizit an anderer Stelle nur den Smartpointer zerstöre)?!</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Was willst du tun? Einzelne Member einer Klasse zerstören? Lass das mal lieber bleiben.</p>
</blockquote>
<p>Halb so wild, wahrscheinlich kann man explizit <code>Release</code> aufrufen. Im Destruktor passiert dann einfach nichts mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047898</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:57:25 GMT</pubDate></item></channel></rss>