<?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[Initialisierung einer Variablen]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>C++ bietet ja zwei Möglichkeiten, eine Variable zu initialisieren:</p>
<pre><code class="language-cpp">int a = 7; // 1. Möglichkeit
int b(7);  // 2. Möglichkeit
</code></pre>
<p>Sind diese beiden Arten vollständig äquivalent? Falls ja, ist dann 1. sozusagen nur die C-like Initialisierung, und 2. die C++ (Konstruktoraufruf-like) Initialisierung?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285955/initialisierung-einer-variablen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 03:34:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285955.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 Apr 2011 18:05:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Initialisierung einer Variablen on Sat, 30 Apr 2011 18:09:10 GMT]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>C++ bietet ja zwei Möglichkeiten, eine Variable zu initialisieren:</p>
<pre><code class="language-cpp">int a = 7; // 1. Möglichkeit
int b(7);  // 2. Möglichkeit
</code></pre>
<p>Sind diese beiden Arten vollständig äquivalent? Falls ja, ist dann 1. sozusagen nur die C-like Initialisierung, und 2. die C++ (Konstruktoraufruf-like) Initialisierung?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056556</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 30 Apr 2011 18:09:10 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung einer Variablen on Sat, 30 Apr 2011 18:19:12 GMT]]></title><description><![CDATA[<p>In der Regel ist es das selbe - kein respektabler Compiler wird einen Unterschied machen. Allerdings gibt es ein paar Feinheiten zu beachten.</p>
<p>Konzeptionell: Initialisierung mit = bedeutet Initialisierung von einem anderen Objekt gleichen Typs, d.h. per Kopierkonstruktor. Bei</p>
<pre><code class="language-cpp">struct A {
  A(int);
};

// ...

A a(123);   // Direkt A(int) aufgerufen
A a2 = 123; // Implizit 123 in ein temporäres Objekt vom Typ A verwandeln, das dann in a2 kopieren.
</code></pre>
<p>Der Compiler darf die Kopie wegoptimieren (und man kann sich in der Praxis auch darauf verlassen, dass das passiert). Es hat allerdings den Effekt, dass die Initialisierung per = unter gewissen (und, wenn man das Konzept nicht kennt, verwirrenden) Umständen nicht kompiliert. Beispiele:</p>
<pre><code class="language-cpp">struct A {
  A(int) { };
};

struct B {
  explicit B(int) { }
};

struct C {
  C(int) { }
private:
  C(C const &amp;);
};

struct D {
  D(int) { }
  explicit D(D const &amp;);
};

int main() {
  A a = 2; // Geht
  B b = 2; // Geht nicht, keine implizite Umwandlung von int nach B
  C c = 2; // Geht nicht, Kopierkonstruktor privat
  D d = 2; // Geht nicht, Kopierkonstruktor ist explicit

  A a2(2); // Geht
  B b2(2); // Geht
  C c2(2); // Geht
  D d2(2); // Geht
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2056562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056562</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 30 Apr 2011 18:19:12 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung einer Variablen on Sat, 30 Apr 2011 18:22:07 GMT]]></title><description><![CDATA[<p>Na, bei der ersten Methode hast du nicht beliebig viele Parameter.</p>
<pre><code class="language-cpp">struct foo
{
  foo(int a, int b){};
};
foo bar1(1, 2); //OK
foo bar2 = foo(1, 2); //OK
foo bar3 = 1, 2; //...
</code></pre>
<p>EDIT: seldon bringts perfekt auf den Punkt <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/2056563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056563</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sat, 30 Apr 2011 18:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung einer Variablen on Sat, 30 Apr 2011 18:30:41 GMT]]></title><description><![CDATA[<p>Danke dir seldon, für deine Erklärung bezüglich benutzerdefinierter Datentypen. <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>
<p>Doch wie schaut es aus, wenn wir uns nur auf der Ebene vordefinierter Datentypen bewegen. Gibt es da auch irgendwelche Feinheiten zu beachten, oder ist es hierbei wirklich gleichwertig? Einen Konstruktor in dem Sinne gibt es ja bei vordefinierten Datentypen nicht, oder?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056568</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 30 Apr 2011 18:30:41 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung einer Variablen on Sat, 30 Apr 2011 18:36:26 GMT]]></title><description><![CDATA[<p>Da ist es völlig gleichgültig. Bei den meisten komplexen Datentypen ist es auch gleichgültig - wenn der Entwickler des Datentyps keine guten Gründe hat, es zu verbieten, wird er es im Zweifel nicht tun.</p>
<p>In Templates tendiere ich dazu, die Klammersyntax zu benutzen, nur für den Fall, aber ansonsten ist das wirklich herzlich egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056571</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 30 Apr 2011 18:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung einer Variablen on Sat, 30 Apr 2011 18:42:05 GMT]]></title><description><![CDATA[<p>Gut, danke dir, alle Fragen beantwortet <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2056574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056574</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 30 Apr 2011 18:42:05 GMT</pubDate></item></channel></rss>