<?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[auto_ptr vs. scoped_ptr]]></title><description><![CDATA[<p>Hi</p>
<p>Hab mal ne Frage betrefend smart pointern. Ich will folgenden Code sicher machen und das ist wohl ein Fall für eben diese:</p>
<pre><code class="language-cpp">{
    View* pView = factory.create(&quot;Hello World!&quot;);
    pView-&gt;show();
    delete pView;
}
</code></pre>
<p>Hab mir auch den Artikel durchgelesen und hier brauche ich ja keine Referenzzählung, da das Objekt gleich wieder zerstört werden wird. Zuweisungen sind ja auch nicht vorgesehen.<br />
Welche der beiden, auto_ptr oder boost::scoped_ptr, sind denn hier &quot;besser&quot; im Sinne von Performance und Design?</p>
<p>Und ein zweites Beispiel ist hier:</p>
<pre><code class="language-cpp">File* pFile = new TxtFile;
pFile-&gt;load(sFilename);
</code></pre>
<p>Wobei TxtFile von der abstrakten Klasse File erbt und ich nachher virtuelle Funktionen (zB load()) drauf aufrufen möchte. Geht das auch mit smart pointern, und wenn ja hätte ich die gleiche Frage wie oben.</p>
<p>Und generell ne Frage, kann man eigentlich komplett auf Zeiger verzichten in C++?</p>
<p>Danke schonmal im voraus<br />
Grüsse</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171639/auto_ptr-vs-scoped_ptr</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 12:53:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171639.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Jan 2007 18:39:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 18:39:23 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Hab mal ne Frage betrefend smart pointern. Ich will folgenden Code sicher machen und das ist wohl ein Fall für eben diese:</p>
<pre><code class="language-cpp">{
    View* pView = factory.create(&quot;Hello World!&quot;);
    pView-&gt;show();
    delete pView;
}
</code></pre>
<p>Hab mir auch den Artikel durchgelesen und hier brauche ich ja keine Referenzzählung, da das Objekt gleich wieder zerstört werden wird. Zuweisungen sind ja auch nicht vorgesehen.<br />
Welche der beiden, auto_ptr oder boost::scoped_ptr, sind denn hier &quot;besser&quot; im Sinne von Performance und Design?</p>
<p>Und ein zweites Beispiel ist hier:</p>
<pre><code class="language-cpp">File* pFile = new TxtFile;
pFile-&gt;load(sFilename);
</code></pre>
<p>Wobei TxtFile von der abstrakten Klasse File erbt und ich nachher virtuelle Funktionen (zB load()) drauf aufrufen möchte. Geht das auch mit smart pointern, und wenn ja hätte ich die gleiche Frage wie oben.</p>
<p>Und generell ne Frage, kann man eigentlich komplett auf Zeiger verzichten in C++?</p>
<p>Danke schonmal im voraus<br />
Grüsse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218242</guid><dc:creator><![CDATA[Class Clever]]></dc:creator><pubDate>Sat, 27 Jan 2007 18:39:23 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 18:44:34 GMT]]></title><description><![CDATA[<p>boost::scoped_ptr lässt sich gar nicht kopieren also geht es gar nicht damit!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218245</guid><dc:creator><![CDATA[Class Hirn]]></dc:creator><pubDate>Sat, 27 Jan 2007 18:44:34 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 18:46:38 GMT]]></title><description><![CDATA[<p>scoped_ptr bietet dir keine Kopiersemantik, während dir auto_ptr eine etwas merkwürdige Kopiersemantik (destruktives Kopieren) anbietet. Daher sollte man scoped_ptr vorziehen.</p>
<blockquote>
<p>Und generell ne Frage, kann man eigentlich komplett auf Zeiger verzichten in C++?</p>
</blockquote>
<p>Ja. Zumindest indirekt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218247</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Sat, 27 Jan 2007 18:46:38 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 18:48:52 GMT]]></title><description><![CDATA[<p>Class Clever schrieb:</p>
<blockquote>
<p>Welche der beiden, auto_ptr oder boost::scoped_ptr, sind denn hier &quot;besser&quot; im Sinne von Performance und Design?</p>
</blockquote>
<p>Die sollten, wenn ich das richtig sehe hier exakt gleich sein. Ich würde trotzdem den scoped_ptr verwenden, der Name ist irgendwie expressiver.</p>
<p>Class Clever schrieb:</p>
<blockquote>
<p>Und ein zweites Beispiel ist hier:</p>
<pre><code class="language-cpp">File* pFile = new TxtFile;
pFile-&gt;load(sFilename);
</code></pre>
<p>Wobei TxtFile von der abstrakten Klasse File erbt und ich nachher virtuelle Funktionen (zB load()) drauf aufrufen möchte. Geht das auch mit smart pointern, und wenn ja hätte ich die gleiche Frage wie oben.</p>
</blockquote>
<p>Die Art des Smartpointers, die du wählst, hängt nicht von Methoden oder ähnlichem ab (alle verhalten sich bei Dereferenzierung grundsätzlich gleich), sondern von der gewünschten Lebensdauer des bezeigten Objekts.</p>
<p>Class Clever schrieb:</p>
<blockquote>
<p>Und generell ne Frage, kann man eigentlich komplett auf Zeiger verzichten in C++?</p>
</blockquote>
<p>Wenn du stattdessen Smartpointer oder Referenzen benutzt, eigentlich schon. Aber manchmal brauchst du dennoch einen Zeiger (zB. für Bibliotheken).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218250</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sat, 27 Jan 2007 18:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 18:53:04 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antworten.<br />
Also wenn scoped_ptr nicht kopierbar ist, kann ich den nicht als Rückgabewert meiner Funktion create() verwenden oder wie? Soll die dann trotzdem einen normalen Zeiger zurückgeben?<br />
Meine Factory Methode bis jetzt:</p>
<pre><code class="language-cpp">View* Factory::create() const
{
    return new View();
}
</code></pre>
<p>Und beim zweite Beispiel müsst ich dann einfach pFile.get()-&gt;load() machen oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218252</guid><dc:creator><![CDATA[Class Clever]]></dc:creator><pubDate>Sat, 27 Jan 2007 18:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 19:03:25 GMT]]></title><description><![CDATA[<p>Class Clever schrieb:</p>
<blockquote>
<p>Danke für die schnelle Antworten.<br />
Also wenn scoped_ptr nicht kopierbar ist, kann ich den nicht als Rückgabewert meiner Funktion create() verwenden oder wie? Soll die dann trotzdem einen normalen Zeiger zurückgeben?</p>
</blockquote>
<p>Ich würde einen shared_ptr zurückgeben.</p>
<p>Class Clever schrieb:</p>
<blockquote>
<p>Und beim zweite Beispiel müsst ich dann einfach pFile.get()-&gt;load() machen oder wie?</p>
</blockquote>
<p>Nein. pFile-&gt;load() funktioniert auch, das ist der Trick an der Sache (operator* und operator-&gt; überladen). Hast du dich eigentlich überhaupt mal mit Smartpointern beschäftigt?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218257</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sat, 27 Jan 2007 19:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 19:07:58 GMT]]></title><description><![CDATA[<blockquote>
<p>Nein. pFile-&gt;load() funktioniert auch, das ist der Trick an der Sache (operator* und operator-&gt; überladen). Hast du dich eigentlich überhaupt mal mit Smartpointern beschäftigt?!</p>
</blockquote>
<p>Nein, damit fang ich doch grade an. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<blockquote>
<p>Ich würde einen shared_ptr zurückgeben.</p>
</blockquote>
<p>Im Artikel steht die seien etwas langsamer, daher dacht ich das ein scoped_ptr besser wär, aber ich wers mal versuchen.</p>
<p>Danke für die Hilfe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218261</guid><dc:creator><![CDATA[Class Clever]]></dc:creator><pubDate>Sat, 27 Jan 2007 19:07:58 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 19:54:51 GMT]]></title><description><![CDATA[<p>Also ich habs jetzt doch so:</p>
<pre><code class="language-cpp">{
    boost::scoped_ptr&lt;View&gt; pView( factory.create(&quot;Hello World!&quot;) );
    pView-&gt;show();
}
</code></pre>
<p>Denn eigentlich bin ich zu faul die Schnittstellen aller factories zu ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218284</guid><dc:creator><![CDATA[Class Clever]]></dc:creator><pubDate>Sat, 27 Jan 2007 19:54:51 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 22:04:39 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Class Clever schrieb:</p>
<blockquote>
<p>Danke für die schnelle Antworten.<br />
Also wenn scoped_ptr nicht kopierbar ist, kann ich den nicht als Rückgabewert meiner Funktion create() verwenden oder wie? Soll die dann trotzdem einen normalen Zeiger zurückgeben?</p>
</blockquote>
<p>Ich würde einen shared_ptr zurückgeben.</p>
</blockquote>
<p>Ne, da bietet sich ein auto_ptr an. shared_ptr sollte man vermeiden, wenn es geht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218381</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Sat, 27 Jan 2007 22:04:39 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sat, 27 Jan 2007 22:10:06 GMT]]></title><description><![CDATA[<p>ihr könntet auch 'nen GC verwenden, damit wären wie durch ein wunder alle smart-pointer überflüssig <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/1218384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218384</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Sat, 27 Jan 2007 22:10:06 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 00:55:07 GMT]]></title><description><![CDATA[<p>ten, zeig mir eine GC Implementierung für C bzw. C++ und ich zeig dir einen GC der stinkt.<br />
Ernsthaft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218431</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 28 Jan 2007 00:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 03:22:56 GMT]]></title><description><![CDATA[<p>Class Clever schrieb:</p>
<blockquote>
<p>Also ich habs jetzt doch so:</p>
<pre><code class="language-cpp">{
    boost::scoped_ptr&lt;View&gt; pView( factory.create(&quot;Hello World!&quot;) );
    pView-&gt;show();
}
</code></pre>
<p>Denn eigentlich bin ich zu faul die Schnittstellen aller factories zu ändern.</p>
</blockquote>
<p>Geht das echt? <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="😮"
    /> <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="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218444</guid><dc:creator><![CDATA[loooool]]></dc:creator><pubDate>Sun, 28 Jan 2007 03:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 10:22:11 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>ten, zeig mir eine GC Implementierung für C bzw. C++ und ich zeig dir einen GC der stinkt.<br />
Ernsthaft.</p>
</blockquote>
<p>gibts da nix vernünftiges?<br />
das erschreckt mich jetzt aber.<br />
man liest doch ständig in den ganzen flamewars, dass man einfach nur eine GC-library mit hinzulinken kann, und schon hat man garbage collection wie die grossen...</p>
<p>btw: wieso gibts überhaupt etliche verschiedene typen von smart pointern?<br />
kann nicht mal einer 'ne smartpointerklasse coden, die für alles geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218481</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Sun, 28 Jan 2007 10:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 11:00:36 GMT]]></title><description><![CDATA[<p>ten schrieb:</p>
<blockquote>
<p>btw: wieso gibts überhaupt etliche verschiedene typen von smart pointern?</p>
</blockquote>
<p>Weil es etliche verschiedene Anforderungen gibt, die man an einen Smart-Pointer stellen kann.</p>
<blockquote>
<p>kann nicht mal einer 'ne smartpointerklasse coden, die für alles geht?</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Mal davon abgesehen, dass so eine Klasse jedem Grundprinzip der OOP bzw. der Programmierung im allgemeinen widersprechen würde, wird das schlicht nicht gehen. Du kannst ja auch nicht eine Container-Klasse schreiben, die alle denkbaren Container-Ausprägungen repräsentieren kann.</p>
<p>Es es gibt natürlich Ansätze (z.B. Lokis Smart-Pointer), die Variabilität durch verschiedene Policies ermöglichen und diese dann in einer Template-Klasse aggregieren. Das ist dann aber natürlich auch nicht &quot;eine Klasse für alles&quot;, da verschiedene Instanziierung verschiedene Klassen generieren...</p>
<blockquote>
<p>ten, zeig mir eine GC Implementierung für C bzw. C++ und ich zeig dir einen GC der stinkt.<br />
Ernsthaft.</p>
</blockquote>
<p>Das würde ich so nicht unterschreiben. Es gibt durchaus brauchbare GC-Implementierungen für C++. Auch das sind sicher keine &quot;one size fits all&quot;-Ansätze, aber für konkrete Einsatzgebiete sind sie dennoch brauchbar.<br />
Bsp: <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/" rel="nofollow">http://www.hpl.hp.com/personal/Hans_Boehm/gc/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218500</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sun, 28 Jan 2007 11:00:36 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 11:17:22 GMT]]></title><description><![CDATA[<p>Ich nehme jetzt nicht das J-Wort in den Mund (Flameware-Gefahr!), aber selbst bekannte GC-Implementierungen lassen sich per VM-Startparameter für Client- und für Server-Betrieb ausrichten. D.h. auch hier: in etablierten GC-Sprachen, gibt es keinen allgemeingültigen GC. Sondern es muß vom User entschieden werden, welchen GC-Typ er nun für seine Aufgabe nutzen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218508</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 28 Jan 2007 11:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 13:08:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">{ 
     boost::scoped_ptr&lt;View&gt; pView( factory.create(&quot;Hello World!&quot;) ); 
     pView-&gt;show(); 
 }
</code></pre>
<p>Das ist scheints böse, weil nicht exceptions sicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /><br />
Scott Meyers Effective Trick 17 (Im Ernst <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>Speichern Sie mit new erzeugte Objekte in intelligenten Zeigern in eigenständiger Anweisung.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1218567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218567</guid><dc:creator><![CDATA[Class Cleverer]]></dc:creator><pubDate>Sun, 28 Jan 2007 13:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 13:16:11 GMT]]></title><description><![CDATA[<p>Class Cleverer schrieb:</p>
<blockquote>
<pre><code class="language-cpp">{ 
     boost::scoped_ptr&lt;View&gt; pView( factory.create(&quot;Hello World!&quot;) ); 
     pView-&gt;show(); 
 }
</code></pre>
<p>Das ist scheints böse, weil nicht exceptions sicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /><br />
Scott Meyers Effective Trick 17 (Im Ernst <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>Speichern Sie mit new erzeugte Objekte in intelligenten Zeigern in eigenständiger Anweisung.</p>
</blockquote>
</blockquote>
<p>Warum sollte das nicht exceptionsicher sein?</p>
<p>Edit:</p>
<p>Achso, die create Funktion wurde ja immernoch nicht geändert und gibt weiterhin ein View* zurück..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218574</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Sun, 28 Jan 2007 13:16:11 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 14:07:28 GMT]]></title><description><![CDATA[<p>Class Cleverer schrieb:</p>
<blockquote>
<pre><code class="language-cpp">{ 
     boost::scoped_ptr&lt;View&gt; pView( factory.create(&quot;Hello World!&quot;) ); 
     pView-&gt;show(); 
 }
</code></pre>
<p>Das ist scheints böse, weil nicht exceptions sicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /><br />
Scott Meyers Effective Trick 17 (Im Ernst <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>Speichern Sie mit new erzeugte Objekte in intelligenten Zeigern in eigenständiger Anweisung.</p>
</blockquote>
</blockquote>
<p>Im Ernst, es sind nur Richtlinien <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 />
In diesem Fall kann es keine Resourcenlecks geben ... Schau dir nochmal das Kapitel an, da gehts um die Reihenfolge der Auswertung von Argumenten, wodurch Resourcenlecks auftreten könnten.<br />
Doch hier hast du einen &quot;sauberen&quot; Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218614</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 28 Jan 2007 14:07:28 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 14:09:36 GMT]]></title><description><![CDATA[<p>Wäre es denn ok von der fyctory nen View* Pointer zurückzugeben?<br />
Ansonsten bau ich mir lieber grad nen Intrinsic_ptr ein..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218615</guid><dc:creator><![CDATA[Class Clever]]></dc:creator><pubDate>Sun, 28 Jan 2007 14:09:36 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Sun, 28 Jan 2007 21:26:20 GMT]]></title><description><![CDATA[<p>Es wäre logisch und richtig, factory.create eine auto_ptr zurückgeben zu lassen. Aus mir unverständlichen Gründen kann ein scoped_ptr keine auto_ptr direkt konsumieren. Folglich würde das ganze dann so aussehen:</p>
<pre><code class="language-cpp">{
     boost::scoped_ptr&lt;View&gt; pView( factory.create(&quot;Hello World!&quot;).release() );
     pView-&gt;show();
 }
</code></pre>
<p>Es spricht aber wohl nichts dagegen, statt dessen einen auto_ptr für pView zu benutzen. Andererseits ist die Variante mit release auf ihre Weise auch sehr expressiv. Prinzipiell bin ich ja der Meinung, das jeder Smartpointer, der ownership repräsentiert, fehlerhaft designed ist, wenn er keine kompatiblen auto_ptr konsumieren kann.</p>
<p>Wenn allerdings klar ist, das factory.create einen auto_ptr zurückgibt - also der Ausdurck so oder so sicher ist, wird die ganze Sache viel einfacher (und eben so, wie es eigentlich sein soll *wink richtung GC-Vertreter*):</p>
<pre><code class="language-cpp">factory.create(&quot;Hello World!&quot;)-&gt;show();
</code></pre>
<p>und gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218878</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 28 Jan 2007 21:26:20 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr vs. scoped_ptr on Mon, 29 Jan 2007 00:20:10 GMT]]></title><description><![CDATA[<p>ten schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>ten, zeig mir eine GC Implementierung für C bzw. C++ und ich zeig dir einen GC der stinkt.<br />
Ernsthaft.</p>
</blockquote>
<p>gibts da nix vernünftiges?<br />
das erschreckt mich jetzt aber.<br />
man liest doch ständig in den ganzen flamewars, dass man einfach nur eine GC-library mit hinzulinken kann, und schon hat man garbage collection wie die grossen...</p>
</blockquote>
<p>In C, und wenn man aufpasst was man tut, vielleicht. In grösseren C++ Programmen die man nicht Zeile für Zeile durchgehen will... würde ich es garnicht erst probieren. Zumindest nicht wenn diese viel Speicher verbrauchen und/oder sehr lange laufen sollen - Serverprogramme z.B.</p>
<p>Kurz: ein Collector für C oder C++ mag für einige Programme durchaus geeignet sein. Aber einfach das GC Frameword dazulinken, search &amp; replace drüberlaufen lassen um malloc zu ersetzen bzw. das globale &quot;new&quot; überladen - damit werden etliche Programme nicht gescheit funktionieren.</p>
<blockquote>
<p>btw: wieso gibts überhaupt etliche verschiedene typen von smart pointern?<br />
kann nicht mal einer 'ne smartpointerklasse coden, die für alles geht?</p>
</blockquote>
<p>Naja, shared_ptr (boost) geht ja für sogut-wie-alles. Das Hauptproblem welches ich bei Smartpointern sehe ist: Thread-safety. Wenn man darauf verzichtet hat man zwar einen schnellen Smartpointer, dafür kann man ihn nur innerhalb eines Threads verwenden. Wenn man dagegen einen Thread-safe Smartpointer macht kann man den zwar überall verwenden, dafür ist er langsam (interlocked Befehle).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1218941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1218941</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 29 Jan 2007 00:20:10 GMT</pubDate></item></channel></rss>