<?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[Standard-Frage]]></title><description><![CDATA[<p>Hallo</p>
<p>Frage zu folgendem Code:</p>
<pre><code>class A
{
public:
   A( A&amp; a) { }
...
};
...
main:
char a = a;
A a1=a1;
A a2(a2);
</code></pre>
<p>Wie genau ist das im Standard definiert. War es nicht so, dass werden Werttypen diesbezgl. anders behandelt als Klassen?</p>
<p>Steht nicht in Lehrbüchern, dass</p>
<pre><code>A a0;
A a=a0;
</code></pre>
<p>äquivalent zu:</p>
<pre><code>A a0;
A a(a0);
</code></pre>
<p>ist?</p>
<p>VS 2003/2008, welcher bekannter maßen nicht gerade der konformste Compile rist, übersetzt das obige Bsp mit einem Fehler <em>a2 :undeclared identifier</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286857/standard-frage</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 17:29:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286857.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 May 2011 14:44:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Standard-Frage on Tue, 17 May 2011 14:44:08 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Frage zu folgendem Code:</p>
<pre><code>class A
{
public:
   A( A&amp; a) { }
...
};
...
main:
char a = a;
A a1=a1;
A a2(a2);
</code></pre>
<p>Wie genau ist das im Standard definiert. War es nicht so, dass werden Werttypen diesbezgl. anders behandelt als Klassen?</p>
<p>Steht nicht in Lehrbüchern, dass</p>
<pre><code>A a0;
A a=a0;
</code></pre>
<p>äquivalent zu:</p>
<pre><code>A a0;
A a(a0);
</code></pre>
<p>ist?</p>
<p>VS 2003/2008, welcher bekannter maßen nicht gerade der konformste Compile rist, übersetzt das obige Bsp mit einem Fehler <em>a2 :undeclared identifier</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064736</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 17 May 2011 14:44:08 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Frage on Tue, 17 May 2011 14:56:18 GMT]]></title><description><![CDATA[<p>Schau dir das mal ganz genau an:</p>
<pre><code class="language-cpp">A a2(a2);
</code></pre>
<p>Du übergibst ein Objekt, das du gerade erstellen möchtest. Sollte meiner Meinung nach nicht funktionieren.</p>
<p>Oder wozu willst du den das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064744</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Tue, 17 May 2011 14:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Frage on Tue, 17 May 2011 15:03:13 GMT]]></title><description><![CDATA[<p>Ja, genau darum geht es mir! Was sagt der Std diesbezüglich? Dass das keinen Sinn macht erschließt sich von selbst. Ich bin grad drauf gestossen, weil ich einen Code debugt habe, der sowas ähnliches macht. In dem konkreten Fall wurde eine Variable in einem nested Scope mit einer gleichnamigen initialsiert, die bereits im äußeren Scope initialisert wurde.</p>
<p>Ungefähr so:</p>
<pre><code class="language-cpp">char a = 'l';
{
   char a = a;
}
</code></pre>
<p>Und in diesem Zusammenhang stellte sich mir die Frage, was der Standard den Compilern in einem solchen Fall vorschreibt. Ganz abgesehen davon, dass das mehr als unschön ist!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064750</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 17 May 2011 15:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Frage on Tue, 17 May 2011 15:17:24 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char a = a;
</code></pre>
<p>Wohlgeformt aber undefiniertes Verhalten, da der ursprüngliche Wert von a unbestimmt ist. Wäre ok, wenn das Objekt statische Lebensdauer hätte.</p>
<pre><code class="language-cpp">A a1=a1;
</code></pre>
<p>ill-formed, da kein geeigneter Konstruktor vorhanden. Gäbe es einen solchen, wäre das Verhalten undefiniert.</p>
<pre><code class="language-cpp">A a2(a2);
</code></pre>
<p>ill-formed, da a2 an der Stelle des Argumentes ein unbekannter Bezeichner ist (unter der Annahme, das kein a2 in irgendeinem äußeren Scope deklariert wurde). Der Name des Objektes a2 gilt erst am Ende der Deklaratorliste als bekannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064753</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 17 May 2011 15:17:24 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Frage on Tue, 17 May 2011 15:18:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char a = 'l';
{
   char a = a; 
}
</code></pre>
<p>undefinert, das innere a wird mit sich selbst initialisiert.</p>
<pre><code class="language-cpp">char a = 'l';
{
   char a(a); 
}
</code></pre>
<p>ok, der Initialisierer verweist auf das äußere a</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064754</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 17 May 2011 15:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Frage on Wed, 18 May 2011 06:12:11 GMT]]></title><description><![CDATA[<p>hmm, ok. Aber normalerweise interpretiert der Kompiler doch:</p>
<pre><code class="language-cpp">A a=b;
</code></pre>
<p>mit</p>
<pre><code class="language-cpp">A a(b);
</code></pre>
<p>Zumindest wird nicht der Zuweisungsoperator verwendet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064995</guid><dc:creator><![CDATA[muffmolchTmp]]></dc:creator><pubDate>Wed, 18 May 2011 06:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Frage on Wed, 18 May 2011 07:07:07 GMT]]></title><description><![CDATA[<p>muffmolchTmp schrieb:</p>
<blockquote>
<p>hmm, ok. Aber normalerweise interpretiert der Kompiler doch:</p>
<pre><code class="language-cpp">A a=b;
</code></pre>
<p>mit</p>
<pre><code class="language-cpp">A a(b);
</code></pre>
<p>Zumindest wird nicht der Zuweisungsoperator verwendet...</p>
</blockquote>
<p>Na und? Es ist ja nicht so, dass der Compiler da wortwörtlich die Zeile <code>A a = a;</code> löscht, durch <code>A a(a);</code> ersetzt und dann versucht, diese erneut zu übersetzen. Er ist durchaus in der Lage zu erkennen, welches Objekt wann wo gemeint ist.</p>
<p>Zu solchen speziellen Standardfragen würde ich auch raten, einfach mal den Standard selbst zu lesen. Die Drafts sind frei im Netz verfügbar. Da findest du ca. 4 Seiten wo jeder mögliche Fall durchexerziert wird und dir wird auch ganz genau erklärt wann und warum aus <code>A a = b;</code> ein <code>A a(b);</code> wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065018</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 May 2011 07:07:07 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Frage on Wed, 18 May 2011 07:47:42 GMT]]></title><description><![CDATA[<p>und deshalb ja, die Ausgangsfrage:</p>
<blockquote>
<p>Wie genau ist das im Standard definiert</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065040</guid><dc:creator><![CDATA[muffmolchTmp]]></dc:creator><pubDate>Wed, 18 May 2011 07:47:42 GMT</pubDate></item></channel></rss>