<?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[Besitz kopierender Smartpointer.]]></title><description><![CDATA[<p>In letzter Zeit habe ich mich ein wenig in Smart Pointer eingelesen (vor allem Boost). Die wichtigen verhalten sich ja folgendermassen bezüglich Kopien und Zuweisungen:</p>
<ul>
<li><code>auto_ptr</code> Überträgt (verschiebt) Besitz auf neuen Smart Pointer.</li>
<li><code>shared_ptr</code> Teilt den Besitz unter den einzelnen Smart Pointers.</li>
<li><code>scoped_ptr</code> Beansprucht Besitz für sich allein (verbietet Kopien).</li>
</ul>
<p>Nun habe ich mir überlegt, dass das möglicherweise nicht immer reicht. Wenn man nämlich eine Klasse hat, die Zeiger auf Objekte speichert, will man vielleicht auch, dass die verwiesenen Objekte bei einer Kopie der Klasse ebenfalls kopiert werden. Das ist bei allen drei oben genannten Smart Pointers nicht der Fall.</p>
<p>Aus diesem Anlass habe ich mir ein eigenes Klassentemplate geschrieben, das bei Aufrufen des Kopierkonstruktors oder Zuweisungsoperators jeweils ein neues Objekt anlegt. Der Vorteil besteht für mich darin, dass man bei Klassen mit Zeigern nicht jedes Mal Kopierkonstruktor und Zuweisungsoperator selber implementieren muss. Gegenüber reinen Objekten besteht das Privileg, dass der Typ bei der Deklaration des Smart Pointers noch nicht bekannt sein muss.</p>
<p>Nun möchte ich euch um Rat fragen: Könnte sich diese Vorgehensweise bewähren? Gibt es bereits Ähnliches, wenn ja, wo?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226989/besitz-kopierender-smartpointer</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 08:23:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226989.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Nov 2008 12:13:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Besitz kopierender Smartpointer. on Sun, 09 Nov 2008 12:13:24 GMT]]></title><description><![CDATA[<p>In letzter Zeit habe ich mich ein wenig in Smart Pointer eingelesen (vor allem Boost). Die wichtigen verhalten sich ja folgendermassen bezüglich Kopien und Zuweisungen:</p>
<ul>
<li><code>auto_ptr</code> Überträgt (verschiebt) Besitz auf neuen Smart Pointer.</li>
<li><code>shared_ptr</code> Teilt den Besitz unter den einzelnen Smart Pointers.</li>
<li><code>scoped_ptr</code> Beansprucht Besitz für sich allein (verbietet Kopien).</li>
</ul>
<p>Nun habe ich mir überlegt, dass das möglicherweise nicht immer reicht. Wenn man nämlich eine Klasse hat, die Zeiger auf Objekte speichert, will man vielleicht auch, dass die verwiesenen Objekte bei einer Kopie der Klasse ebenfalls kopiert werden. Das ist bei allen drei oben genannten Smart Pointers nicht der Fall.</p>
<p>Aus diesem Anlass habe ich mir ein eigenes Klassentemplate geschrieben, das bei Aufrufen des Kopierkonstruktors oder Zuweisungsoperators jeweils ein neues Objekt anlegt. Der Vorteil besteht für mich darin, dass man bei Klassen mit Zeigern nicht jedes Mal Kopierkonstruktor und Zuweisungsoperator selber implementieren muss. Gegenüber reinen Objekten besteht das Privileg, dass der Typ bei der Deklaration des Smart Pointers noch nicht bekannt sein muss.</p>
<p>Nun möchte ich euch um Rat fragen: Könnte sich diese Vorgehensweise bewähren? Gibt es bereits Ähnliches, wenn ja, wo?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612316</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 09 Nov 2008 12:13:24 GMT</pubDate></item><item><title><![CDATA[Reply to Besitz kopierender Smartpointer. on Sun, 09 Nov 2008 12:21:59 GMT]]></title><description><![CDATA[<p>Nennt sich COW (Copy on Write).</p>
<p><a href="http://de.wikipedia.org/wiki/Copy-On-Write" rel="nofollow">http://de.wikipedia.org/wiki/Copy-On-Write</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612319</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 09 Nov 2008 12:21:59 GMT</pubDate></item><item><title><![CDATA[Reply to Besitz kopierender Smartpointer. on Sun, 09 Nov 2008 12:47:23 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Nennt sich COW (Copy on Write).</p>
</blockquote>
<p>Ich glaube, du hast mich falsch verstanden. Bei COW geht es darum, überflüssige Kopien zu vermeiden. Mein Smart Pointer hat wenig mit Performance-Optimierung zu tun, sondern soll die Kopiersemantik von Klassen mit Zeigermembern vereinfachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612323</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 09 Nov 2008 12:47:23 GMT</pubDate></item><item><title><![CDATA[Reply to Besitz kopierender Smartpointer. on Sun, 09 Nov 2008 12:53:14 GMT]]></title><description><![CDATA[<p>was willst du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612329</guid><dc:creator><![CDATA[======????????????=====]]></dc:creator><pubDate>Sun, 09 Nov 2008 12:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to Besitz kopierender Smartpointer. on Sun, 09 Nov 2008 13:03:48 GMT]]></title><description><![CDATA[<p>Vor zwei Monaten hatte ich diesselbe Idee <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-222731-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-222731-and-highlight-is-.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612332</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sun, 09 Nov 2008 13:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Besitz kopierender Smartpointer. on Sun, 09 Nov 2008 13:41:13 GMT]]></title><description><![CDATA[<p>Don06 schrieb:</p>
<blockquote>
<p>Vor zwei Monaten hatte ich diesselbe Idee <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Das ist wirklich interessant. Bei deinem Thread hatte ich noch geantwortet, aber ich konnte mich nicht mehr an deinen Smart Pointer erinnern. Genau die folgende Frage beschäftigte mich auch und liess mich am Sinn zweifeln:</p>
<p>Don06 schrieb:</p>
<blockquote>
<p>Wenn so etwas sinnvoll wäre, wäre es doch schon längst in Bibliotheken wie boost zu finden, oder habe ich es einfach übersehen?</p>
</blockquote>
<p>Genauso wie die Lösung mit <code>sizeof</code> im Destruktor (hustbaers Post); da bin ich auch vorher durch kurzes Überlegen drauf gekommen. Hm, Zufälle gibts... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Bei mir heisst die Klasse übrigens <code>object_ptr</code> , weil sie sich fast wie ein Objekt verhält, aber die Nachteile (vollständig bekannter Typ bei Deklaration) schön ausbügelt.</p>
<p>Gründen wir doch einen Verein, um solche Smart Pointers zu verfechten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612353</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 09 Nov 2008 13:41:13 GMT</pubDate></item><item><title><![CDATA[Reply to Besitz kopierender Smartpointer. on Sun, 09 Nov 2008 13:47:00 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Don06 schrieb:</p>
<blockquote>
<p>Vor zwei Monaten hatte ich diesselbe Idee <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Das ist wirklich interessant. Bei deinem Thread hatte ich noch geantwortet, aber ich konnte mich nicht mehr an deinen Smart Pointer erinnern.</p>
</blockquote>
<p>du bist schon ein freak <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612361</guid><dc:creator><![CDATA[lolo rolfo]]></dc:creator><pubDate>Sun, 09 Nov 2008 13:47:00 GMT</pubDate></item></channel></rss>