<?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[Parameter und Rückgabewerte]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>folgende Sache angenommen ich habe mir eine enum definiert, und in irgendeiner Funktion wird eine andere Funktion aufgerufen, die als Parameter eine Ausprägung des enums erwartet.</p>
<pre><code>enum FileType
{
	UNKNOWN = -1,
	TXT,
	DOC
}

void irgendeineFkt()
{
	FileType fileType = TXT;
	eineAndereFkt(fileType);
}

// Variante 1
void eineAndereFkt(const FileType &amp; fileType){}

// Variante 2
void eineAndereFkt(const FileType fileType){}

// Variante 3
void eineAndereFkt(FileType fileType){}
</code></pre>
<p>Welche Variante wäre zu empfehlen (Variante 1)?</p>
<p>Und eine zweite Sache angenommen ich hätte eine Funktion f1, welche eine Funktion f2 oder f3 aufruft, f2 und f3 rufen wiederum f4 auf. Als Rückgabe erwartet f1 einen vector z.B. mit double Werten. Wie sollten dann die Funktionen gestaltet werden (zwecks Performance, Konformität, etc)? Sollte der vector als Parameter mit Adressoperator übergeben werden oder sollten die Funktionen einen vector zurückgeben? Z.B. so:</p>
<pre><code>void f1()
{
	vector&lt;double&gt; values;

	if (bedingung)
	{
		values = f2();
	}
	else
	{
		values = f3();

	}
	//machIrgendwasMitValues();
}

vector&lt;double&gt; f2()
{
	//machWas();
	return f4();
}

vector&lt;double&gt; f3()
{
	//machWasAnderes();
	return f4();
}

vector&lt;double&gt; f4()
{
	vector&lt;double&gt; values;
	//befuelleVector();
	return values;
}
</code></pre>
<p>Danke schon mal für Eure Hilfe.</p>
<p>Gruß<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186245/parameter-und-rückgabewerte</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 08:25:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186245.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Jul 2007 13:06:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parameter und Rückgabewerte on Fri, 06 Jul 2007 13:06:35 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>folgende Sache angenommen ich habe mir eine enum definiert, und in irgendeiner Funktion wird eine andere Funktion aufgerufen, die als Parameter eine Ausprägung des enums erwartet.</p>
<pre><code>enum FileType
{
	UNKNOWN = -1,
	TXT,
	DOC
}

void irgendeineFkt()
{
	FileType fileType = TXT;
	eineAndereFkt(fileType);
}

// Variante 1
void eineAndereFkt(const FileType &amp; fileType){}

// Variante 2
void eineAndereFkt(const FileType fileType){}

// Variante 3
void eineAndereFkt(FileType fileType){}
</code></pre>
<p>Welche Variante wäre zu empfehlen (Variante 1)?</p>
<p>Und eine zweite Sache angenommen ich hätte eine Funktion f1, welche eine Funktion f2 oder f3 aufruft, f2 und f3 rufen wiederum f4 auf. Als Rückgabe erwartet f1 einen vector z.B. mit double Werten. Wie sollten dann die Funktionen gestaltet werden (zwecks Performance, Konformität, etc)? Sollte der vector als Parameter mit Adressoperator übergeben werden oder sollten die Funktionen einen vector zurückgeben? Z.B. so:</p>
<pre><code>void f1()
{
	vector&lt;double&gt; values;

	if (bedingung)
	{
		values = f2();
	}
	else
	{
		values = f3();

	}
	//machIrgendwasMitValues();
}

vector&lt;double&gt; f2()
{
	//machWas();
	return f4();
}

vector&lt;double&gt; f3()
{
	//machWasAnderes();
	return f4();
}

vector&lt;double&gt; f4()
{
	vector&lt;double&gt; values;
	//befuelleVector();
	return values;
}
</code></pre>
<p>Danke schon mal für Eure Hilfe.</p>
<p>Gruß<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319697</guid><dc:creator><![CDATA[PACoSys]]></dc:creator><pubDate>Fri, 06 Jul 2007 13:06:35 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter und Rückgabewerte on Fri, 06 Jul 2007 13:11:41 GMT]]></title><description><![CDATA[<p>1. Variante 3<br />
2. Du könntest den vector per Referenz als Parameter an die Funktionen geben, dann würdest du dir das Kopieren sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319701</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Fri, 06 Jul 2007 13:11:41 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter und Rückgabewerte on Fri, 06 Jul 2007 13:21:32 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>1. Variante 3</p>
</blockquote>
<p>Und warum?</p>
<p>David_pb schrieb:</p>
<blockquote>
<p>2. Du könntest den vector per Referenz als Parameter an die Funktionen geben, dann würdest du dir das Kopieren sparen.</p>
</blockquote>
<p>Also</p>
<pre><code>void f2(vector&lt;double&gt; &amp; values){}
</code></pre>
<p>Gruß<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319713</guid><dc:creator><![CDATA[PACoSys]]></dc:creator><pubDate>Fri, 06 Jul 2007 13:21:32 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter und Rückgabewerte on Fri, 06 Jul 2007 13:27:19 GMT]]></title><description><![CDATA[<p>1. Weil es hier kein Sinn macht konstante Referenzen zu übergeben. Enums werden wie ints behandelt.<br />
2. Genau</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319719</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Fri, 06 Jul 2007 13:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter und Rückgabewerte on Fri, 06 Jul 2007 14:03:31 GMT]]></title><description><![CDATA[<p>Kann ich bei 2. noch irgendwas const definieren (Habe mal irgendwo gelesen man soll so viel wie möglich const definieren.)?</p>
<p>Wenn ich es so definiere:</p>
<pre><code>void f2(const vector&lt;double&gt; &amp; values){}
</code></pre>
<p>Dann ist ja der vector const oder nicht. Und wenn ich es so definiere:</p>
<pre><code>void f2(vector&lt;double&gt; const &amp; values){}
</code></pre>
<p>Dann ist doch nur die Referenz auf den vector const und der vector veränderbar oder nicht?</p>
<p>Gruß<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319762</guid><dc:creator><![CDATA[PACoSys]]></dc:creator><pubDate>Fri, 06 Jul 2007 14:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter und Rückgabewerte on Fri, 06 Jul 2007 14:17:59 GMT]]></title><description><![CDATA[<p>Nein, deine beiden Zeilen sind inhaltlich identisch.<br />
Bei Zeigern kann man 2mal const angeben, bei Referenzen nur 1 mal, denn</p>
<pre><code class="language-cpp">vector&lt;double&gt; &amp; const values
</code></pre>
<p>ergibt keinen Sinn (und wird auch nicht kompilieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319771</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Fri, 06 Jul 2007 14:17:59 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter und Rückgabewerte on Fri, 06 Jul 2007 15:21:03 GMT]]></title><description><![CDATA[<p>PACoSys schrieb:</p>
<blockquote>
<p>Kann ich bei 2. noch irgendwas const definieren (Habe mal irgendwo gelesen man soll so viel wie möglich const definieren.)?</p>
</blockquote>
<p>So viel wie möglich. Aber z.T. machts einfach keinen Sinn und verwirrt nur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319809</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Fri, 06 Jul 2007 15:21:03 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter und Rückgabewerte on Sat, 07 Jul 2007 10:42:07 GMT]]></title><description><![CDATA[<blockquote>
<p>enum FileType<br />
{<br />
UNKNOWN = -1,<br />
TXT,<br />
DOC<br />
}</p>
<p>void irgendeineFkt()<br />
{<br />
FileType fileType = TXT;<br />
eineAndereFkt(fileType);<br />
}</p>
<p>// Variante 1<br />
void eineAndereFkt(const FileType &amp; fileType){}</p>
<p>// Variante 2<br />
void eineAndereFkt(const FileType fileType){}</p>
<p>// Variante 3<br />
void eineAndereFkt(FileType fileType){}</p>
</blockquote>
<p>V1. du hast intern die object values abfragen, ohne etwas zu ändern und es spart copy ctor.(macht keinen Sinn hier, weil FileType ist nicht anders als int)<br />
V2. vergiss es.<br />
V3. besser, aber hier call by value, keine Änderung in orig. fileType möglich.<br />
V4.</p>
<pre><code class="language-cpp">void eineAndereFkt(FileType&amp; fileType){}
</code></pre>
<p>Änderung auf orig. fileType möglich</p>
<p>Frage 2.<br />
keyword: wer soll platz allokieren.</p>
<blockquote>
<p>sollten die Funktionen einen vector zurückgeben</p>
</blockquote>
<p>entspricht, vector internal erzeugt, und nach aussen gefürht.(macht machmal problem und auch unlogisch)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320151</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Sat, 07 Jul 2007 10:42:07 GMT</pubDate></item></channel></rss>