<?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[Explizite Instantiierung von Templates]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich versuche folgende Absätze aus dem Buch zu verstehen, leider lese ich nur Hausnummern..</p>
<pre><code>Die explizite Instantiierung wird gewöhnlich für die Erstellung von
Bibliotheken verwendet, wenn Klassen- bzw. Funktions-Templates nur für
andere Übersetzungseinheiten zur Verfügung gestellt werden.

Wurde also ein Klassen- oder Funktions-Template explizit instantiiert,
so müssen Sie in einer anderen Übersetzungseinheit (Modul) nur eine
einfache Deklaration verwenden, um die Funktion bzw. Klasse zu verwenden.
Eine Solche Deklaration stellt man gewöhnlich in eine Header-Datei wie
zum Beispiel:
</code></pre>
<pre><code class="language-cpp">#include “array.h”
//explizite instantiierung

template class Array&lt;int&gt;;
template class Array&lt;char&gt;;
</code></pre>
<pre><code>Durch diese Vorgehensweise können Sie verhindern, dass einzelne Klassen- bzw.
Funktions-Templates in verschiedenen Modulen mehrmals generiert werden (wobei
der Linker diese “Verdoppelung” später wieder entfernt). Und der Teil eines
Klassen Templates, in dem sich die Definition von Methoden und statischen
Elementen befindet, muss nur in dem Modul vorhanden sein, in dem die Instanzen
der klassen generiert werwden.
</code></pre>
<p>Ich tue mir sehr schwer diesen Text zu verstehen.. ich weiß was die einzelnen Begriffe wie &quot;implizit&quot; usw. bedeuten aber es fällt mir schwer einen tieferen Sinn aus diesen Sätzen zu herauszuholen und warum es nicht auch einfach mit impliziten Templates klappt.</p>
<p>Vielleicht lässt es sich auch einfacher beschreiben.</p>
<p>Wäre dankbar wenn Jemand der sich damit auskennt mal ein paar Sätze dazu niederschreibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267388/explizite-instantiierung-von-templates</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 11:36:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267388.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 May 2010 21:04:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Explizite Instantiierung von Templates on Sun, 23 May 2010 21:04:34 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich versuche folgende Absätze aus dem Buch zu verstehen, leider lese ich nur Hausnummern..</p>
<pre><code>Die explizite Instantiierung wird gewöhnlich für die Erstellung von
Bibliotheken verwendet, wenn Klassen- bzw. Funktions-Templates nur für
andere Übersetzungseinheiten zur Verfügung gestellt werden.

Wurde also ein Klassen- oder Funktions-Template explizit instantiiert,
so müssen Sie in einer anderen Übersetzungseinheit (Modul) nur eine
einfache Deklaration verwenden, um die Funktion bzw. Klasse zu verwenden.
Eine Solche Deklaration stellt man gewöhnlich in eine Header-Datei wie
zum Beispiel:
</code></pre>
<pre><code class="language-cpp">#include “array.h”
//explizite instantiierung

template class Array&lt;int&gt;;
template class Array&lt;char&gt;;
</code></pre>
<pre><code>Durch diese Vorgehensweise können Sie verhindern, dass einzelne Klassen- bzw.
Funktions-Templates in verschiedenen Modulen mehrmals generiert werden (wobei
der Linker diese “Verdoppelung” später wieder entfernt). Und der Teil eines
Klassen Templates, in dem sich die Definition von Methoden und statischen
Elementen befindet, muss nur in dem Modul vorhanden sein, in dem die Instanzen
der klassen generiert werwden.
</code></pre>
<p>Ich tue mir sehr schwer diesen Text zu verstehen.. ich weiß was die einzelnen Begriffe wie &quot;implizit&quot; usw. bedeuten aber es fällt mir schwer einen tieferen Sinn aus diesen Sätzen zu herauszuholen und warum es nicht auch einfach mit impliziten Templates klappt.</p>
<p>Vielleicht lässt es sich auch einfacher beschreiben.</p>
<p>Wäre dankbar wenn Jemand der sich damit auskennt mal ein paar Sätze dazu niederschreibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901647</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Sun, 23 May 2010 21:04:34 GMT</pubDate></item><item><title><![CDATA[Reply to Explizite Instantiierung von Templates on Sun, 23 May 2010 21:25:23 GMT]]></title><description><![CDATA[<p>Explizite Instanzierung ist sozusagen eine Optiemierung, mit der du vermeiden kannst, dass templates mehrfach vom compiler aufgelöst werden müssen.</p>
<p>Stell dir dazu einfach vor, dass du z.B mehrere Quelldateien hast (im gleichen Projekt) und jede inkludiert z.B <code>std::vector</code> und jede Quelldatei muss sich durch den kompletten template Kram wühlen (wenn du z.b <code>std::vector&lt;int&gt;</code> benutzt). Das ist doch recht viel Arbeit und es würde reichen, wenn das template einmal aufgelöst würde. Mit der expliziten Instanzierung kannst du genau das erreichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901654</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 23 May 2010 21:25:23 GMT</pubDate></item><item><title><![CDATA[Reply to Explizite Instantiierung von Templates on Sun, 23 May 2010 21:33:26 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Das heisst dass dann zwar ich in jeder Header Datei die std::vector&lt;int&gt; verwendet wird aber tatsächlich nur einmal als Funktion generiert wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901657</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Sun, 23 May 2010 21:33:26 GMT</pubDate></item><item><title><![CDATA[Reply to Explizite Instantiierung von Templates on Sun, 23 May 2010 23:02:06 GMT]]></title><description><![CDATA[<p>Verstehe deine Frage nicht..</p>
<p>Du kannst dir das so vorstellen, dass der Compiler da bei de expliziten Instanzierung einfach die komplette Klasse mit dem angegebenen Typen erstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901674</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 23 May 2010 23:02:06 GMT</pubDate></item></channel></rss>