<?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[throw()]]></title><description><![CDATA[<p>Wozu throw da ist, ist mir schon klar, aber wozu soll das sein:</p>
<pre><code class="language-cpp">/*
 * copied_ptr - simple copy-on-create/assign pointer.
 *
 * Note: If the actual object pointed to belongs to a derived class,
 * then copied_ptr will not create a copy of the derived class object,
 * but a new base class object.
 * If you want to use a polymorphic copy-on-assign pointer, use
 * cloned_ptr.
 */

#ifndef COPIED_PTR_H
#define COPIED_PTR_H

/* For ANSI-challenged compilers, you may want to #define explicit */

template &lt;class X&gt; class copied_ptr
{
public:
    typedef X element_type;

    explicit copied_ptr(X* p = 0) throw()       : itsPtr(p) {}
    ~copied_ptr()                               {delete itsPtr;}
    copied_ptr(const copied_ptr&amp; r)             {copy(r.get());}
    copied_ptr&amp; operator=(const copied_ptr&amp; r)
    {
        if (this != &amp;r) {
            delete itsPtr;
            copy(r);
        }
        return *this;
    }

    X&amp; operator*()  const throw()               {return *itsPtr;}
    X* operator-&gt;() const throw()               {return itsPtr;}
    X* get()        const throw()               {return itsPtr;}

private:
    X* itsPtr;
    void copy(const copied_ptr&amp; r)  {itsPtr = r.itsPtr ? new X(*r.itsPtr) : 0;}
};

#endif // COPIED_PTR_H
</code></pre>
<p>hinter jedem Operator, bzw. jeder Funktion steht ein throw.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159327/throw</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 10:41:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159327.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Sep 2006 04:20:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to throw() on Thu, 14 Sep 2006 04:20:56 GMT]]></title><description><![CDATA[<p>Wozu throw da ist, ist mir schon klar, aber wozu soll das sein:</p>
<pre><code class="language-cpp">/*
 * copied_ptr - simple copy-on-create/assign pointer.
 *
 * Note: If the actual object pointed to belongs to a derived class,
 * then copied_ptr will not create a copy of the derived class object,
 * but a new base class object.
 * If you want to use a polymorphic copy-on-assign pointer, use
 * cloned_ptr.
 */

#ifndef COPIED_PTR_H
#define COPIED_PTR_H

/* For ANSI-challenged compilers, you may want to #define explicit */

template &lt;class X&gt; class copied_ptr
{
public:
    typedef X element_type;

    explicit copied_ptr(X* p = 0) throw()       : itsPtr(p) {}
    ~copied_ptr()                               {delete itsPtr;}
    copied_ptr(const copied_ptr&amp; r)             {copy(r.get());}
    copied_ptr&amp; operator=(const copied_ptr&amp; r)
    {
        if (this != &amp;r) {
            delete itsPtr;
            copy(r);
        }
        return *this;
    }

    X&amp; operator*()  const throw()               {return *itsPtr;}
    X* operator-&gt;() const throw()               {return itsPtr;}
    X* get()        const throw()               {return itsPtr;}

private:
    X* itsPtr;
    void copy(const copied_ptr&amp; r)  {itsPtr = r.itsPtr ? new X(*r.itsPtr) : 0;}
};

#endif // COPIED_PTR_H
</code></pre>
<p>hinter jedem Operator, bzw. jeder Funktion steht ein throw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136989</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Thu, 14 Sep 2006 04:20:56 GMT</pubDate></item><item><title><![CDATA[Reply to throw() on Thu, 14 Sep 2006 05:25:28 GMT]]></title><description><![CDATA[<p><a href="http://tutorial.schornboeck.net/exception_spec.htm" rel="nofollow">http://tutorial.schornboeck.net/exception_spec.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136998</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 14 Sep 2006 05:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to throw() on Thu, 14 Sep 2006 08:41:44 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p><a href="http://tutorial.schornboeck.net/exception_spec.htm" rel="nofollow">http://tutorial.schornboeck.net/exception_spec.htm</a></p>
</blockquote>
<p>Ergänzend sollte man sagen, dass leider einige Compiler nicht einmal feststellen, wenn eine Verletzung der exception specification vorliegt und stattdessen einfach die exception fliegen lassen und NICHT terminate aufrufen.</p>
<p>Ergo: exception specifications sind bestenfalls &quot;Schmuck am Nachthemd&quot; , schlimmstenfalls Verwirrungsstifter, die Fehlersuche und Wartung eher erschweren als vereinfachen.</p>
<p>[java-sachen gelöscht]</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137050</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 14 Sep 2006 08:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to throw() on Thu, 14 Sep 2006 08:42:09 GMT]]></title><description><![CDATA[<p>[antworten auf java-sachen gelöscht]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137051</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Thu, 14 Sep 2006 08:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to throw() on Thu, 14 Sep 2006 12:24:00 GMT]]></title><description><![CDATA[<p>EDIT: OK, dann nochmal ohne &quot;Java-Sachen&quot;</p>
<p>evilissimo schrieb:</p>
<blockquote>
<p>...<br />
Das ist nicht Problem der Sprache, sondern des Compilers und des Programmierers der Klasse.</p>
<p>BR<br />
Vinzenz</p>
</blockquote>
<p>Neee, es ist das Problem der Sprache, dass sie spezifiziert,<br />
a) dass eine ex-spec erst zur Laufzeit ausgewertet wird. Ist eigentlich Blödsinn, da man diese genauso auswerten kann wie die &quot;const-correctness&quot; .... aber bei ex-specs wurde diese Konzession gemacht, um die &quot;C-Anbindung&quot; zu unterstützen; ich hätte mir da lieber eine Erweiterung à la &quot; extern &quot;C&quot; &quot; gewünscht.</p>
<p>b) Nicht besonders hilfreich ist, dass ein globales terminate() aufgerufen wird, dass keine Chance mehr hat, festzustellen, wer wann wo welche exception geworfen hat. Damit kann man eigentlich in dieser Methode nichts sinnvolles mehr machen. Da hilft es auch nicht, dass man terminate() ersetzen kann ... weil auch die eigene Funktion nicht hellsehen kann. Alternativ kann man natürlich versuchen, für jeden Aufruf, der eine ex-spec-Verletzung verursachen könnte, eine eigene terminate()-Funktion zu setzen .... aber das ist (abgesehen von Laufzeitnachteilen) ein Wartungs-Armageddon.</p>
<p>Muß man bei der Verwendung von exc-spec einfach bedenken.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137058</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 14 Sep 2006 12:24:00 GMT</pubDate></item><item><title><![CDATA[Reply to throw() on Thu, 14 Sep 2006 08:48:59 GMT]]></title><description><![CDATA[<p>in erinnerung an <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-158841-and-start-is-0.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-158841-and-start-is-0.html</a> trenne ich hier mal frühzeitig sachthema und sprachenkrieg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137084</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 14 Sep 2006 08:48:59 GMT</pubDate></item><item><title><![CDATA[Reply to throw() on Thu, 14 Sep 2006 12:43:56 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>...sprachenkrieg.</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="😮"
    /><br />
OK, den wollte ich wirklich nicht anzetteln und habe noch nicht genug Erfahrung hier, um so etwas (in Art und Ausmaß) vorauszusehen</p>
<p>Bleiben wir also einfach bei unserer schönen Sprache C++, den um die geht's hier ...<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
<p>P.S.: In besagtem Thread habe ich übrigens gar nicht den Eindruck, dass es sich um einen &quot;interlingualen Krieg&quot; handelt, sondern mehr um &quot;Dewhurst::C++Gotchas#12::Adolescent Behaviour&quot; und andere Eitelkeiten. Die &quot;Hauptkampfhandlungen&quot; werden ja zwischen C++ern ausgetragen..... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1137291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137291</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 14 Sep 2006 12:43:56 GMT</pubDate></item></channel></rss>