<?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[Konstruktoren werden nicht aufgerufen]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

struct Example{
    Example(){
        std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n';
    }

    Example(const Example&amp; ) { std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n'; }
    Example(Example&amp;&amp; ) { std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n'; }
};

Example foo(){
    return Example(); // einmal default ctor
}

int main(){
    /* einmal copy ctor */  foo();
    /* zweimal copy ctor */ Example(foo());
    return 0;
}
</code></pre>
<p>Kompiliert mit G++ 4.8 und die Bildschirmausgabe lautet</p>
<pre><code>Example::Example()
Example::Example()
</code></pre>
<p>Da fehlen aber noch drei Aufrufe. Warum? Mit <code>std::endl</code> statt <code>'\n'</code> hab ich es auch schon versucht - vergeblich.<br />
Bete um Hilfe.</p>
<p>Liebe Grüße.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316214/konstruktoren-werden-nicht-aufgerufen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 03:39:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316214.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Apr 2013 19:43:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 19:43:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

struct Example{
    Example(){
        std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n';
    }

    Example(const Example&amp; ) { std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n'; }
    Example(Example&amp;&amp; ) { std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n'; }
};

Example foo(){
    return Example(); // einmal default ctor
}

int main(){
    /* einmal copy ctor */  foo();
    /* zweimal copy ctor */ Example(foo());
    return 0;
}
</code></pre>
<p>Kompiliert mit G++ 4.8 und die Bildschirmausgabe lautet</p>
<pre><code>Example::Example()
Example::Example()
</code></pre>
<p>Da fehlen aber noch drei Aufrufe. Warum? Mit <code>std::endl</code> statt <code>'\n'</code> hab ich es auch schon versucht - vergeblich.<br />
Bete um Hilfe.</p>
<p>Liebe Grüße.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318494</guid><dc:creator><![CDATA[kleinlich]]></dc:creator><pubDate>Thu, 25 Apr 2013 19:43:26 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:05:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Da fehlen aber noch drei Aufrufe</p>
</blockquote>
<p>Es kommt da nur &quot;Example::Example()&quot;.</p>
<p>Und das hat einen guten Grund:</p>
<pre><code>foo();
</code></pre>
<p>Kein einziges mal copy-ctor, weil hier nix kopiert wird (wieso auch?). Nur einmal default-ctor, weil es im return-statement so steht.</p>
<pre><code>Example(foo());
</code></pre>
<p>Das ist eine Funktionsdeklaration. Es deklariert eine Funktion, die keine Argumente nimmt und Example zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318500</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:05:48 GMT]]></title><description><![CDATA[<p>Ist das etwa Teil des neuen C++11 Standards?<br />
<a href="http://codepad.org/duHsYFqQ" rel="nofollow">codepad</a> zeigt mir nämlich was anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318501</guid><dc:creator><![CDATA[kleinlich]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:13:00 GMT]]></title><description><![CDATA[<p>Ups, da hab ich alten Code gepostet, sorry.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct Example{
    Example(){
        std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n';
    }

    Example(const Example&amp; ) { std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n'; }
    Example(Example&amp;&amp; ) { std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; '\n'; }
    void foo(){}
};

Example foo(){
    return Example(); // einmal default ctor
}

int main(){
    /* einmal copy ctor */  foo();
    /* zweimal copy ctor */ Example example(foo());
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2318502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318502</guid><dc:creator><![CDATA[kleinlich]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:18:28 GMT]]></title><description><![CDATA[<p>Ich würde meinen, Zeile 22 wird auf die einfache Erstellung einer Example Instanz optimiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318504</guid><dc:creator><![CDATA[Youka]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:18:28 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:21:47 GMT]]></title><description><![CDATA[<p>Youka schrieb:</p>
<blockquote>
<p>Ich würde meinen, Zeile 22 wird auf die einfache Erstellung einer Example Instanz optimiert.</p>
</blockquote>
<p>Optimierungen sind allesamt ausgeschaltet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318506</guid><dc:creator><![CDATA[kleinlich]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:21:47 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:29:48 GMT]]></title><description><![CDATA[<p>kleinlich schrieb:</p>
<blockquote>
<p><a href="http://codepad.org/duHsYFqQ" rel="nofollow">codepad</a> zeigt mir nämlich was anderes.</p>
</blockquote>
<p>Alle erwarteten Ausgaben werden angezeigt, weil wohl keinerlei Optimierung stattfindet.</p>
<p>kleinlich schrieb:</p>
<blockquote>
<p>Optimierungen sind allesamt ausgeschaltet.</p>
</blockquote>
<p>Mit Optimierungen bekomme ich aber die gleichen 2 Zeilen raus wie du.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318507</guid><dc:creator><![CDATA[Youka]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:29:48 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:33:06 GMT]]></title><description><![CDATA[<p>Youka schrieb:</p>
<blockquote>
<p>kleinlich schrieb:</p>
<blockquote>
<p><a href="http://codepad.org/duHsYFqQ" rel="nofollow">codepad</a> zeigt mir nämlich was anderes.</p>
</blockquote>
<p>Alle erwarteten Ausgaben werden angezeigt, weil wohl keinerlei Optimierung stattfindet.</p>
<p>kleinlich schrieb:</p>
<blockquote>
<p>Optimierungen sind allesamt ausgeschaltet.</p>
</blockquote>
<p>Mit Optimierungen bekomme ich aber die gleichen 2 Zeilen raus wie du.</p>
</blockquote>
<p>Nun, Du denkst Zeile 22 wird optimiert, was ist denn mit Zeile 21?<br />
Selbst dann müsste die Ausgabe</p>
<pre><code>Example::Example()
Example::Example()
Example::Example(const Example&amp; )
</code></pre>
<p>lauten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318509</guid><dc:creator><![CDATA[kleinlich]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:33:51 GMT]]></title><description><![CDATA[<p>kleinlich schrieb:</p>
<blockquote>
<p>Youka schrieb:</p>
<blockquote>
<p>Ich würde meinen, Zeile 22 wird auf die einfache Erstellung einer Example Instanz optimiert.</p>
</blockquote>
<p>Optimierungen sind allesamt ausgeschaltet.</p>
</blockquote>
<p>Diese Optimierung kannst du nicht so einfach abschalten. Die ist vom Sprachstandard so als das empfohlene Programmverhalten vorgegeben. Beim GCC kann man das mittels -fno-elide-constructors abschalten. Benutz das aber nur dieses eine Mal und sonst nie wieder. Diese Optimierung ist wichtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318510</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:33:51 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren werden nicht aufgerufen on Thu, 25 Apr 2013 20:36:04 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Diese Optimierung kannst du nicht so einfach abschalten. Die ist vom Sprachstandard so als das empfohlene Programmverhalten vorgegeben. Beim GCC kann man das mittels -fno-elide-constructors abschalten. Benutz das aber nur dieses eine Mal und sonst nie wieder. Diese Optimierung ist wichtig.</p>
</blockquote>
<p>Soso!<br />
Danke an alle Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318512</guid><dc:creator><![CDATA[kleinlich]]></dc:creator><pubDate>Thu, 25 Apr 2013 20:36:04 GMT</pubDate></item></channel></rss>