<?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[Nennt man sowas cast?]]></title><description><![CDATA[<pre><code class="language-cpp">class bar
{
public:
	bar(int i){
		std::cout&lt;&lt;&quot;bar&quot;&lt;&lt;i&lt;&lt;std::endl;
	};
};

void foo(float f)
{
	std::cout&lt;&lt;&quot;foo float&quot;&lt;&lt;f&lt;&lt;std::endl;
}

void foo(bar const&amp; b)
{
	std::cout&lt;&lt;&quot;foo bar&quot;&lt;&lt;std::endl;
}

int main(int argc, char** argv) 
{
	int i = 0;
	foo(bar(i));	//Konstruktor aufruf
	foo(static_cast&lt;float&gt;(i));  //Cast
	foo(float(i));  //Nennt man das Cast?
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/225386/nennt-man-sowas-cast</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 12:55:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/225386.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Oct 2008 18:23:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nennt man sowas cast? on Wed, 22 Oct 2008 18:23:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class bar
{
public:
	bar(int i){
		std::cout&lt;&lt;&quot;bar&quot;&lt;&lt;i&lt;&lt;std::endl;
	};
};

void foo(float f)
{
	std::cout&lt;&lt;&quot;foo float&quot;&lt;&lt;f&lt;&lt;std::endl;
}

void foo(bar const&amp; b)
{
	std::cout&lt;&lt;&quot;foo bar&quot;&lt;&lt;std::endl;
}

int main(int argc, char** argv) 
{
	int i = 0;
	foo(bar(i));	//Konstruktor aufruf
	foo(static_cast&lt;float&gt;(i));  //Cast
	foo(float(i));  //Nennt man das Cast?
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1603028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1603028</guid><dc:creator><![CDATA[Siehe Code]]></dc:creator><pubDate>Wed, 22 Oct 2008 18:23:46 GMT</pubDate></item><item><title><![CDATA[Reply to Nennt man sowas cast? on Wed, 22 Oct 2008 19:02:14 GMT]]></title><description><![CDATA[<p>Siehe Code schrieb:</p>
<blockquote>
<pre><code class="language-cpp">//...
foo(float(i));  //Nennt man das Cast?
//...
</code></pre>
</blockquote>
<p>Würde ich so nennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1603050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1603050</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 22 Oct 2008 19:02:14 GMT</pubDate></item><item><title><![CDATA[Reply to Nennt man sowas cast? on Wed, 22 Oct 2008 19:55:38 GMT]]></title><description><![CDATA[<p>Um genau zu sein ist es ein sogenannter „function style cast“, der semantisch äquivalent ist mit dem C-Style Cast:</p>
<pre><code class="language-cpp">type(x); // ist dasselbe wie:
(type)x;
</code></pre>
<p>Er hat also offensichtlich alle Nachteile, die auch der normale C-Style Cast besitzt. Vermeide ihn lieber zugunsten des expliziten `static_cast`. Es gibt sogar Leute (Scott Meyers …), die dasselbe für den Konstruktoraufruf mit einem Parameter empfehlen. Scott würde also für Deinen ersten Fall ebenfalls einen expliziten Cast verwenden (was auch legal ist, denn auch hier handelt es sich trotz des Konstruktor-Aufrufs um einen Function-Style Cast):</p>
<pre><code class="language-cpp">foo(static_cast&lt;bar&gt;(i));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1603076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1603076</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 22 Oct 2008 19:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Nennt man sowas cast? on Thu, 23 Oct 2008 12:52:20 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Um genau zu sein ist es ein sogenannter „function style cast“, der semantisch äquivalent ist mit dem C-Style Cast:</p>
<pre><code class="language-cpp">type(x); // ist dasselbe wie:
(type)x;
</code></pre>
<p>Er hat also offensichtlich alle Nachteile, die auch der normale C-Style Cast besitzt. Vermeide ihn lieber zugunsten des expliziten `static_cast`. Es gibt sogar Leute (Scott Meyers …), die dasselbe für den Konstruktoraufruf mit einem Parameter empfehlen. Scott würde also für Deinen ersten Fall ebenfalls einen expliziten Cast verwenden (was auch legal ist, denn auch hier handelt es sich trotz des Konstruktor-Aufrufs um einen Function-Style Cast):</p>
<pre><code class="language-cpp">foo(static_cast&lt;bar&gt;(i));
</code></pre>
</blockquote>
<p>Man sollte evtl. hinzufügen, dass diese Casts, mit Klassen-rvalues als Ergebnistyp niemals etas anderes produzieren können, als ein static_cast es täte (weil Klassen-rvalues nicht Ergebnis eines reinterpret_cast sein können). Man gewinnt also an dieser Stelle nichts, wenn es nur darum geht, Mehrdeutigkeiten zu vermeiden. Persönlich kann ich diesem inflationären Gebrauch von static_casts auch nichts abgewinnen. Weil beide Formen äquivalent sind, halte ich es für sinnvoller, dies zu nutzen um dem Leser des Codes Bedeutungsunterschiede klar zu machen - ebenso wie man dieselbe Sache mit der natürlichen Sprache auf unterschiedliche Weise ausdrücken und aber dabei die Betonung auf unterschiedliche Aspekte setzen kann.</p>
<pre><code class="language-cpp">foo(static_cast&lt;bar&gt;(i)); // übergib foo ein i in der Form eines bar
foo(bar(i)); // übergib foo ein bar, dessen Inhalt durch i bestimmt ist
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1603409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1603409</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 23 Oct 2008 12:52:20 GMT</pubDate></item></channel></rss>