<?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[Frage zu Konstruktor]]></title><description><![CDATA[<p>Hallo, ich versuche gerade ein Beispiel aus einem Buch von Stroustrup zu verstehen, einfachheits halber habe ich das Beispiel gekürtzt.</p>
<p>Meine Fragen:<br />
Wieso wird am Anfang: const Date&amp; default_date() aufgerufen? Müsste da nicht eigentlich</p>
<pre><code class="language-cpp">Date::Date() : y( default_date() . year() )
</code></pre>
<p>aufgerufen werden?</p>
<p>Wenn ich</p>
<pre><code class="language-cpp">const Date&amp; default_date()
</code></pre>
<p>aus dem Code rausnehmen und z.b.schreibe:</p>
<pre><code class="language-cpp">Date::Date() : y( 8 )
</code></pre>
<p>dann wird</p>
<pre><code class="language-cpp">Date::Date()
</code></pre>
<p>auch zu erst aufgerufen.</p>
<p>Oh, jetzt seh ich glaub ich gerade meinen Denkfehler:</p>
<pre><code class="language-cpp">Date::Date() : y( default_date() . year()
</code></pre>
<p>wird anscheind wohl auch zu erst aufgerufen doch bevor ich meine Ausgabe</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;third&quot;&lt;&lt;endl;
</code></pre>
<p>sehe kann wird im Konstruktor ja die Funktion</p>
<pre><code class="language-cpp">const Date&amp; default_date()
</code></pre>
<p>aufgerufen sehe ich das richtig?</p>
<pre><code class="language-cpp">Date::Date() :
	 y( default_date() . year() )
</code></pre>
<p>Und mit .year(); sage ich an dieser Stelle das ich die Funktion year(); direkt im Konstruktor Code aufrufen will? Stimmt das so?</p>
<p>Im Buch ist diese Stelle leider nur sehr kurz beschrieben, ich weiss nicht ob der Herr Stroustrup ein paar Kapitel weiter dieses Programm nochmal genauer erklärt, daher würde ich es jetzt gerne verstehen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;vector.h&gt;

using namespace std;

class Date {
public:

	Date();
	Date(int yy );

    int   year()  const { return y; }

// private:
	int   y;

};

//------------------------------------------------------------------------------

const Date&amp; default_date()
{
	cout&lt;&lt;&quot;first&quot;&lt;&lt;endl;

	static const Date dd(2001 );

	return dd;
}

//------------------------------------------------------------------------------

Date::Date() :
	 y( default_date() . year() )  // .year() bedeutet das die Funktion im Konstruktur Code
	 							  // aufgerufen werden soll?
{	cout&lt;&lt;&quot;third&quot;&lt;&lt;endl;	}

//------------------------------------------------------------------------------

Date::Date(int yy ) :
	 y(yy)   
{
	cout&lt;&lt;&quot;second&quot; &lt;&lt;endl;
}

//------------------------------------------------------------------------------

int main()
{

Date ff;  // Kein Parameter, übergeben erster Aufruf also: const Date&amp; default_date();

cout&lt;&lt;&quot;ff: &quot; &lt;&lt; ff.y &lt;&lt; endl;
cout&lt;&lt;&quot;year: &quot; &lt;&lt; ff.year() &lt;&lt; endl;

   //	vector&lt;Date&gt; birthdays(4);
  //	cout&lt;&lt; birthdays[0].year() &lt;&lt; endl;
  //	cout&lt;&lt;birthdays[0]. y &lt;&lt; endl;

	system(&quot;PAUSE&quot;);
    return 0;
}

//------------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/305464/frage-zu-konstruktor</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 21:11:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305464.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Jun 2012 19:17:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Konstruktor on Fri, 29 Jun 2012 19:17:05 GMT]]></title><description><![CDATA[<p>Hallo, ich versuche gerade ein Beispiel aus einem Buch von Stroustrup zu verstehen, einfachheits halber habe ich das Beispiel gekürtzt.</p>
<p>Meine Fragen:<br />
Wieso wird am Anfang: const Date&amp; default_date() aufgerufen? Müsste da nicht eigentlich</p>
<pre><code class="language-cpp">Date::Date() : y( default_date() . year() )
</code></pre>
<p>aufgerufen werden?</p>
<p>Wenn ich</p>
<pre><code class="language-cpp">const Date&amp; default_date()
</code></pre>
<p>aus dem Code rausnehmen und z.b.schreibe:</p>
<pre><code class="language-cpp">Date::Date() : y( 8 )
</code></pre>
<p>dann wird</p>
<pre><code class="language-cpp">Date::Date()
</code></pre>
<p>auch zu erst aufgerufen.</p>
<p>Oh, jetzt seh ich glaub ich gerade meinen Denkfehler:</p>
<pre><code class="language-cpp">Date::Date() : y( default_date() . year()
</code></pre>
<p>wird anscheind wohl auch zu erst aufgerufen doch bevor ich meine Ausgabe</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;third&quot;&lt;&lt;endl;
</code></pre>
<p>sehe kann wird im Konstruktor ja die Funktion</p>
<pre><code class="language-cpp">const Date&amp; default_date()
</code></pre>
<p>aufgerufen sehe ich das richtig?</p>
<pre><code class="language-cpp">Date::Date() :
	 y( default_date() . year() )
</code></pre>
<p>Und mit .year(); sage ich an dieser Stelle das ich die Funktion year(); direkt im Konstruktor Code aufrufen will? Stimmt das so?</p>
<p>Im Buch ist diese Stelle leider nur sehr kurz beschrieben, ich weiss nicht ob der Herr Stroustrup ein paar Kapitel weiter dieses Programm nochmal genauer erklärt, daher würde ich es jetzt gerne verstehen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;vector.h&gt;

using namespace std;

class Date {
public:

	Date();
	Date(int yy );

    int   year()  const { return y; }

// private:
	int   y;

};

//------------------------------------------------------------------------------

const Date&amp; default_date()
{
	cout&lt;&lt;&quot;first&quot;&lt;&lt;endl;

	static const Date dd(2001 );

	return dd;
}

//------------------------------------------------------------------------------

Date::Date() :
	 y( default_date() . year() )  // .year() bedeutet das die Funktion im Konstruktur Code
	 							  // aufgerufen werden soll?
{	cout&lt;&lt;&quot;third&quot;&lt;&lt;endl;	}

//------------------------------------------------------------------------------

Date::Date(int yy ) :
	 y(yy)   
{
	cout&lt;&lt;&quot;second&quot; &lt;&lt;endl;
}

//------------------------------------------------------------------------------

int main()
{

Date ff;  // Kein Parameter, übergeben erster Aufruf also: const Date&amp; default_date();

cout&lt;&lt;&quot;ff: &quot; &lt;&lt; ff.y &lt;&lt; endl;
cout&lt;&lt;&quot;year: &quot; &lt;&lt; ff.year() &lt;&lt; endl;

   //	vector&lt;Date&gt; birthdays(4);
  //	cout&lt;&lt; birthdays[0].year() &lt;&lt; endl;
  //	cout&lt;&lt;birthdays[0]. y &lt;&lt; endl;

	system(&quot;PAUSE&quot;);
    return 0;
}

//------------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2228547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2228547</guid><dc:creator><![CDATA[ctor]]></dc:creator><pubDate>Fri, 29 Jun 2012 19:17:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Konstruktor on Sat, 30 Jun 2012 07:16:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ja, das hast du wohl richtig verstanden. Zuerst wird bei einem Konstruktor die <a href="http://de.wikipedia.org/wiki/Initialisierungsliste" rel="nofollow">Initialisierungsliste</a> abgearbeitet (und dort dann evtl. auch Funktionen aufgerufen). Und danach wird dann erst der Block des Konstruktors verarbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2228607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2228607</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sat, 30 Jun 2012 07:16:57 GMT</pubDate></item></channel></rss>