<?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[Schablonen&#x2F;Templates]]></title><description><![CDATA[<p>Hallo, Ich habe mal eine Frage zu folgenden 2 Beispielen:</p>
<p>1. Beispiel:<br />
IntList(const IntList&amp; list); //Konstruktor der Klasse IntList<br />
void append(const int&amp; x);<br />
void prepend(const int&amp; x);</p>
<p>wird zu ==&gt;</p>
<p>List(const List&lt;T&gt;&amp; list);<br />
void append(const T&amp; x);<br />
void prepend(const T&amp; x);</p>
<p>also int -&gt; T</p>
<p>2. Beispiel</p>
<p>bool Contains(int aElem);<br />
void Delete(int aElem);<br />
void Insert(int aElem);</p>
<p>wird zu ==&gt;</p>
<p>bool Contains(T&amp; aElem);<br />
void Delete(T&amp; aElem);<br />
void Insert(T&amp; aElem);</p>
<p>also int -&gt; T&amp;</p>
<p>Und das verwirrt mich, wann muss der datentyp zu T und wann zu T&amp; verändert werden?</p>
<p>Danke schonmal im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/283692/schablonen-templates</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 13:02:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/283692.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Mar 2011 15:29:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 15:29:56 GMT]]></title><description><![CDATA[<p>Hallo, Ich habe mal eine Frage zu folgenden 2 Beispielen:</p>
<p>1. Beispiel:<br />
IntList(const IntList&amp; list); //Konstruktor der Klasse IntList<br />
void append(const int&amp; x);<br />
void prepend(const int&amp; x);</p>
<p>wird zu ==&gt;</p>
<p>List(const List&lt;T&gt;&amp; list);<br />
void append(const T&amp; x);<br />
void prepend(const T&amp; x);</p>
<p>also int -&gt; T</p>
<p>2. Beispiel</p>
<p>bool Contains(int aElem);<br />
void Delete(int aElem);<br />
void Insert(int aElem);</p>
<p>wird zu ==&gt;</p>
<p>bool Contains(T&amp; aElem);<br />
void Delete(T&amp; aElem);<br />
void Insert(T&amp; aElem);</p>
<p>also int -&gt; T&amp;</p>
<p>Und das verwirrt mich, wann muss der datentyp zu T und wann zu T&amp; verändert werden?</p>
<p>Danke schonmal im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035792</guid><dc:creator><![CDATA[Wilky]]></dc:creator><pubDate>Thu, 17 Mar 2011 15:29:56 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 15:32:30 GMT]]></title><description><![CDATA[<p>Das ist nur eine Referenz. Oft ist es bei Klassen performanter, wenn man keine Kopie erstellt, sondern nur eine Referenz hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035795</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Thu, 17 Mar 2011 15:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 15:32:41 GMT]]></title><description><![CDATA[<p>Es gibt kein Schema-F dafür. Man nimmt das was man braucht. Dazu muss man natürlich die Bedeutung verstehen. Und die lernt man nicht durch das Betrachten von Beispielen ohne jeden Kontext.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035796</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Mar 2011 15:32:41 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 17:57:50 GMT]]></title><description><![CDATA[<p>Anstatt diesen T&amp;'s gehören überall const T&amp;'s hin, anstatt den int's const int's <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035841</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 17 Mar 2011 17:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 18:15:11 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Anstatt diesen T&amp;'s gehören überall const T&amp;'s hin,</p>
</blockquote>
<p>Würde ich auch sagen</p>
<blockquote>
<p>anstatt den int's const int's <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Top-Level const in Parametertypen ist egal.<br />
Verändert nichtmal die Signatur.<br />
Anders gesagt, es ist OK eine Funktion z.B. mit</p>
<pre><code class="language-cpp">void foo(int param);
</code></pre>
<p>zu deklarieren und dann mit</p>
<pre><code class="language-cpp">void foo(int const param)
{
}
</code></pre>
<p>zu definieren.</p>
<p>Was sich ändert ist lediglich ob man den Parameter innerhalb der Definition von <code>foo</code> ändern kann oder nicht. Spielt aber für den Aufrufer keine Rolle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035853</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 17 Mar 2011 18:15:11 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 18:22:22 GMT]]></title><description><![CDATA[<p>Okay, das ist selbst mir neu. Ich dachte man kann an die Funktion mit int keine const ints übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035854</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 17 Mar 2011 18:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 18:25:14 GMT]]></title><description><![CDATA[<p>Wilky schrieb:</p>
<blockquote>
<p>also int -&gt; T&amp;</p>
<p>Und das verwirrt mich, wann muss der datentyp zu T und wann zu T&amp; verändert werden?</p>
</blockquote>
<p>Wie schon erwähnt wurde macht <code>T&amp;</code> keinen grossen Sinn, wenn dann <code>T const&amp;</code> (bzw. <code>const T&amp;</code> was aber nur ne andere Schreibweise ist).</p>
<p>Der Unterschied ist dass einmal kopiert wird ( <code>int</code> , <code>T</code> ), und einmal nicht ( <code>int const&amp;</code> , <code>T const&amp;</code> ).</p>
<p>Bei einem Integer ist es egal, bzw. ist es sogar besser ihn zu kopieren, da eine Referenz auf einen Integer meistens langsamer ist als ihn direkt zu kopieren.</p>
<p>Bei beliebigen Datentypen ist es aber meist besser eine Referenz zu übergeben, denn bei Typen wie z.B. <code>std::string</code> ist das Kopieren sicher langsamer als der (vergleichsweise kleine) Overhead den die Referenz verursacht.</p>
<p>Das ganze ist allerdings nicht nur bei Templates relevant. Man sollte auch bei ganz normalen Funktionen die z.B. Strings als Parameter nehmen diese als Referenz-auf-const übergeben (also <code>std::string const&amp; param</code> statt einfach nur <code>std::string param</code> ). Wo es auch oft vergessen wird sind Smart-Pointer, z.B. <code>std::shared_ptr&lt;T&gt;</code> . Die sind zwar hübsch klein, aber trotzdem vergleichsweise sehr langsam zu kopieren (-&gt; die atomaren Instruktionen die dazu nötig sind sind auf den allermeisten Systemen richtig teuer).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035858</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 17 Mar 2011 18:25:14 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 18:48:34 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Ich dachte man kann an die Funktion mit int keine const ints übergeben?</p>
</blockquote>
<p>Doch, bei Kopien konnte man schon immer CV-Qualizierer entfernen. Wieso auch nicht, <code>const</code> soll ja nur verhindern, dass ein Objekt (und nicht Kopien davon) verändert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035872</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 17 Mar 2011 18:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 18:55:59 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Okay, das ist <em>selbst mir</em> neu.</p>
</blockquote>
<p>*kicher*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035881</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 17 Mar 2011 18:55:59 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 20:26:25 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Okay, das ist <em>selbst mir</em> neu.</p>
</blockquote>
<p>*kicher*</p>
</blockquote>
<p>Was willst du damit ausdrücken? Entweder habe ich es nicht bewusst wahrgenommen, oder eben noch nicht verwendet. Ich denke eher das erstere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035913</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 17 Mar 2011 20:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 20:33:10 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Okay, das ist <em>selbst mir</em> neu.</p>
</blockquote>
<p>*kicher*</p>
</blockquote>
<p>Was willst du damit ausdrücken?</p>
</blockquote>
<p>Das dir so einiges nicht bekannt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035914</guid><dc:creator><![CDATA[MitKicherer]]></dc:creator><pubDate>Thu, 17 Mar 2011 20:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 20:37:26 GMT]]></title><description><![CDATA[<p>Ich denke, mit meinen 15 Jahren bin ich jung genug, dass mir einiges noch nicht bekannt sein darf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035916</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 17 Mar 2011 20:37:26 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 20:42:54 GMT]]></title><description><![CDATA[<p>Ich denke, mit deinen 15 Jahren solltest du dann keine Sätze wie &quot;das ist selbst mir neu&quot; schreiben.</p>
<p>Die Formulierung impliziert nämlich, dass es sehr erstaunlich ist, dass es dir neu ist. Und diese Implikation fand ich einfach zum kichern.<br />
Streiche das &quot;selbst&quot; aus dem Satz, und er ist vollkommen OK.<br />
(Tip: das &quot;selbst&quot; bedeutet in der Konstellation &quot;sogar&quot;, nicht &quot;selbst&quot; im Sinn von &quot;ich selbst&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2035918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035918</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 17 Mar 2011 20:42:54 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Thu, 17 Mar 2011 20:43:50 GMT]]></title><description><![CDATA[<p>Okay, einverstanden <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/2035921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2035921</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 17 Mar 2011 20:43:50 GMT</pubDate></item><item><title><![CDATA[Reply to Schablonen&#x2F;Templates on Fri, 18 Mar 2011 05:35:13 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Ich denke, mit deinen 15 Jahren solltest du dann keine Sätze wie &quot;das ist selbst mir neu&quot; schreiben.</p>
<p>Die Formulierung impliziert nämlich, dass es sehr erstaunlich ist, dass es dir neu ist. Und diese Implikation fand ich einfach zum kichern.<br />
Streiche das &quot;selbst&quot; aus dem Satz, und er ist vollkommen OK.<br />
(Tip: das &quot;selbst&quot; bedeutet in der Konstellation &quot;sogar&quot;, nicht &quot;selbst&quot; im Sinn von &quot;ich selbst&quot;)</p>
</blockquote>
<p>Ich denke, das war selbst ihm neu. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2036039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2036039</guid><dc:creator><![CDATA[hehehe]]></dc:creator><pubDate>Fri, 18 Mar 2011 05:35:13 GMT</pubDate></item></channel></rss>