<?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[C++11 Buch und Polymorphiefrage]]></title><description><![CDATA[<p>Ich habe heute im Buchladen zum ersten mal Bücher zu C++11 gesehen.<br />
Das eine war von MuT - Dirk Louis<br />
und das andere von Addison Wesley.</p>
<p>Gibt es schon ehrliche Meinungen zu diesen Büchern? Ich muss ohnehin C++ mal gescheit lernen... und suche ein WIRKLICH brauchbares Buch <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>
<p>Das nächste ist eine Frage zur Polymorphie:</p>
<p>ich kenne das bisher nur so:</p>
<pre><code class="language-cpp">class Base { foo()...}
class Derived: Base{foo()...}

Base* x = new Derived();
x-&gt;foo() // ruft Derived::foo() auf
</code></pre>
<p>Kann man das ganze auch nur mit Referenzen tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298374/c-11-buch-und-polymorphiefrage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 00:47:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298374.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jan 2012 17:51:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Wed, 18 Jan 2012 17:51:39 GMT]]></title><description><![CDATA[<p>Ich habe heute im Buchladen zum ersten mal Bücher zu C++11 gesehen.<br />
Das eine war von MuT - Dirk Louis<br />
und das andere von Addison Wesley.</p>
<p>Gibt es schon ehrliche Meinungen zu diesen Büchern? Ich muss ohnehin C++ mal gescheit lernen... und suche ein WIRKLICH brauchbares Buch <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>
<p>Das nächste ist eine Frage zur Polymorphie:</p>
<p>ich kenne das bisher nur so:</p>
<pre><code class="language-cpp">class Base { foo()...}
class Derived: Base{foo()...}

Base* x = new Derived();
x-&gt;foo() // ruft Derived::foo() auf
</code></pre>
<p>Kann man das ganze auch nur mit Referenzen tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169693</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 18 Jan 2012 17:51:39 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Wed, 18 Jan 2012 17:58:06 GMT]]></title><description><![CDATA[<p>shisha schrieb:</p>
<blockquote>
<p>Kann man das ganze auch nur mit Referenzen tun?</p>
</blockquote>
<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169700</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 18 Jan 2012 17:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Wed, 18 Jan 2012 19:32:28 GMT]]></title><description><![CDATA[<p>Ja, aber wieso &quot;nur&quot;?</p>
<p>Edit: es sähe so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

struct Base
{
    virtual void print()
    {
        std::cout &lt;&lt; &quot;Base print function called!\n&quot;;
    }
};

struct Derived : public Base
{
    void print()
    {
        std::cout &lt;&lt; &quot;Derived print function called!\n&quot;;
    }
};

int main()
{
    Base* base_ptr(new Derived);
    Base&amp; base_ref(*new Derived);

    base_ptr-&gt;print();
    base_ref.print();
    base_ptr-&gt;Base::print();
    base_ref.Base::print();

    delete base_ptr;
    delete &amp;base_ref;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2169751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169751</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 18 Jan 2012 19:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Wed, 18 Jan 2012 19:24:29 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>shisha schrieb:</p>
<blockquote>
<p>Kann man das ganze auch nur mit Referenzen tun?</p>
</blockquote>
<p>Ja, aber wieso &quot;nur&quot;?</p>
</blockquote>
<p>Weil Zeiger und Referenz eine semantische Gemeinsamkeit haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169754</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Wed, 18 Jan 2012 19:24:29 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Thu, 19 Jan 2012 08:52:03 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Base&amp; base_ref(*new Derived);
    delete &amp;base_ref;
</code></pre>
</blockquote>
<p>Ist das Dein ernst? Zeig doch offensichtlichen Anfängern nicht immer so einen Schrott.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169928</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 19 Jan 2012 08:52:03 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Thu, 19 Jan 2012 09:18:26 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Hacker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Base&amp; base_ref(*new Derived);
    delete &amp;base_ref;
</code></pre>
</blockquote>
<p>Ist das Dein ernst? Zeig doch offensichtlichen Anfängern nicht immer so einen Schrott.</p>
</blockquote>
<p>Eine Erklärung, WAS daran Schrott ist, wäre für den offensichtlichen Anfänger nicht verkehrt, damit er die &quot;Fehler&quot; schneller erkennt <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/2169945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169945</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Thu, 19 Jan 2012 09:18:26 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Thu, 19 Jan 2012 09:23:48 GMT]]></title><description><![CDATA[<p>Das delete erzeugt undefiniertes Verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169948</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 19 Jan 2012 09:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Thu, 19 Jan 2012 09:34:15 GMT]]></title><description><![CDATA[<p>Hmm, ich habe es mir etwas ausführlicher erhofft...</p>
<p>Also ich lese folgendes:</p>
<p>mit new Derived wir eine neue Derived-Instanz angelegt . Das liefert einen Zeiger zurück, der mittels * dereferenziert wird. Damit wird eine Referenz vom Basistyp initialisiert.</p>
<p>Anschließend wird ein delete aufgerufen mit dem Argument Adresse von base_ref.<br />
Ist diese Adresse nicht die selbe wie vom neu angelegten Objekt?</p>
<p>Wie kann man dann das mit new erzeugt Objekt löschen ohne undefiniertes Verhalten zu erzeugen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169952</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Thu, 19 Jan 2012 09:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Thu, 19 Jan 2012 09:38:16 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Das delete erzeugt undefiniertes Verhalten.</p>
</blockquote>
<p>Ja, wegen dem fehlenden virtuellen Destruktor. Dein Zitat lässt es aber so aussehen, als hätte es was mit den Referenzen zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169955</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 19 Jan 2012 09:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Thu, 19 Jan 2012 11:30:39 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Das delete erzeugt undefiniertes Verhalten.</p>
</blockquote>
<p>Ja, wegen dem fehlenden virtuellen Destruktor. Dein Zitat lässt es aber so aussehen, als hätte es was mit den Referenzen zu tun.</p>
</blockquote>
<p>Stimmt, das delete ist okay. Mir war irgendwie so, als wenn Objekte hinter eine Referenz während der Lebenszeit der Referenz gültig bleiben müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170006</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 19 Jan 2012 11:30:39 GMT</pubDate></item><item><title><![CDATA[Reply to C++11 Buch und Polymorphiefrage on Thu, 19 Jan 2012 13:23:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Mir war irgendwie so, als wenn Objekte hinter eine Referenz während der Lebenszeit der Referenz gültig bleiben müssen.</p>
</blockquote>
<p>Nein, nennt sich dann &quot;dangling reference&quot;</p>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Stimmt, das delete ist okay.</p>
</blockquote>
<p>Jein. Das delete erzeugt kein undefiniertes Verhalten, weil auf die dangling reference hinterher nicht zugegriffen wird. Das delete sorgt auch dafür, dass kein Speicherleck entsteht. Soweit so gut.<br />
ABER: Schon die Zeile 23 mit der Referenz auf das grade eben mit new erzeugte Objekt ist arg unüblich und macht das ebenso arg unübliche delete in Zeile 31 erst nötig. Arg unüblich bedeutet, dass es normalerweise aus guten Gründen unterlassen wird. Einer der Gründe ist in diesem Fall genau der &quot;HÄ?WTF?&quot;-Effekt, den Tachyon erlebt hat (und er ist kein Anfänger).</p>
<p>Fazit: Syntaktisch korrekt, Tut was man will, aber ein Stolperstein und Alptraum für jeden, der den Code unbefangen lesen will. Macht man nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170055</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 19 Jan 2012 13:23:55 GMT</pubDate></item></channel></rss>