<?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[Allgemeine Frage zur Klassendeklaration&#x2F;definition]]></title><description><![CDATA[<p><strong>Habe eine Frage:</strong></p>
<p>Kann man Header-Dateien, in denen man Klassendeklarationen(Elemente und Methoden) schreibt auch direkt für die dazugehörigen Definitionen nutzen (also praktisch die gesamte Klasse in den Header schreiben wie z.B. bei der Klasse &quot;string&quot;)? Und dann eben den Header in eine .cpp Datei inkludieren und direkt die Objekte davon instanzieren...</p>
<p>PS.: Die Frage bezieht sich eher auf den Sinn als darauf, ob es technisch möglich waere...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244151/allgemeine-frage-zur-klassendeklaration-definition</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 12:18:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244151.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Jun 2009 21:17:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Thu, 25 Jun 2009 21:20:33 GMT]]></title><description><![CDATA[<p><strong>Habe eine Frage:</strong></p>
<p>Kann man Header-Dateien, in denen man Klassendeklarationen(Elemente und Methoden) schreibt auch direkt für die dazugehörigen Definitionen nutzen (also praktisch die gesamte Klasse in den Header schreiben wie z.B. bei der Klasse &quot;string&quot;)? Und dann eben den Header in eine .cpp Datei inkludieren und direkt die Objekte davon instanzieren...</p>
<p>PS.: Die Frage bezieht sich eher auf den Sinn als darauf, ob es technisch möglich waere...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1732964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1732964</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 25 Jun 2009 21:20:33 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Thu, 25 Jun 2009 21:18:51 GMT]]></title><description><![CDATA[<p>Geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1732965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1732965</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 25 Jun 2009 21:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Thu, 25 Jun 2009 21:21:37 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Geht.</p>
</blockquote>
<p>OK! Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1732969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1732969</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 25 Jun 2009 21:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 11:32:07 GMT]]></title><description><![CDATA[<p>Da noch keine wirkliche Antwort gegeben wurde, will ich dir mal von dem Vorgehen abraten.</p>
<p>Bei <code>std::string</code> sind die Funktionen im Header inline definiert, weil es sich um ein Template handelt. Bei Templates muss sich die ganze Implementierung im Header befinden. Da es den Standardbibliothek-Entwicklern wohl zu umständlich war, die Definition von der Deklaration zu trennen (z.B. in einer anderen Headerdatei), haben sie sie gleich inline gemacht.</p>
<p>Bei normalen Klassen sollte man Memberfunktionen grundsätzlich nicht im Header definieren. Denn damit wird bei jeder Änderung der Implementierung wieder ein Neukompilieren aller Module, die den betreffenden Header einbinden, fällig. Indem du die Definitionen in .cpp-Dateien auslagerst, hast du nicht nur eine logischere Trennung und kurz gehaltene, übersichtliche Schnittstelle im Header, sondern du verringerst auch die Abhängigkeiten. Zusätzlich ist der zu parsende Code im Header kleiner, was die Kompilierzeit wiederum reduziert.</p>
<p>Dass Funktionen, die in eigenen Modulen definiert sind, weniger gut durch das Compiler-Inlining wegoptimiert werden können, stimmt auch nur begrenzt; bei Compilern mit Linkzeit-Codegenerierung (wie dem von MSVC++) sollte das keinen Unterschied machen.</p>
<p>P.S. Eine Klassendeklaration ist sowas:</p>
<pre><code class="language-cpp">class MyClass;
</code></pre>
<p>Eine Klassendefinition hingegen:</p>
<pre><code class="language-cpp">class MyClass
{
    // Member
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1732979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1732979</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 26 Jun 2009 11:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Thu, 25 Jun 2009 21:51:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Da noch keine wirkliche Antwort gegeben wurde, ...</p>
</blockquote>
<p>Ich habe eine <strong>wirkliche</strong> Antwort auf die Frage:</p>
<blockquote>
<p>Kann man Header-Dateien, in denen man Klassendeklarationen(Elemente und Methoden) schreibt auch direkt für die dazugehörigen Definitionen nutzen(...)?</p>
</blockquote>
<p>gegeben. <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/1732981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1732981</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 25 Jun 2009 21:51:55 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 06:55:18 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<blockquote>
<p>Da noch keine wirkliche Antwort gegeben wurde, ...</p>
</blockquote>
<p>Ich habe eine <strong>wirkliche</strong> Antwort auf die Frage:</p>
<blockquote>
<p>Kann man Header-Dateien, in denen man Klassendeklarationen(Elemente und Methoden) schreibt auch direkt für die dazugehörigen Definitionen nutzen(...)?</p>
</blockquote>
<p>gegeben. <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>
</blockquote>
<p>Du hast aber das PS nicht berücksichtigt, daher keine Antwort auf die eigentliche Frage gegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733081</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 26 Jun 2009 06:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 08:43:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Du hast aber das PS nicht berücksichtigt, daher keine Antwort auf die eigentliche Frage gegeben.</p>
</blockquote>
<p>Doch, habe ich. Sie war vielleicht nicht tiefgründig oder ausführlich, aber es war eine Antwort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733152</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Fri, 26 Jun 2009 08:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 09:00:51 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<blockquote>
<p>Du hast aber das PS nicht berücksichtigt, daher keine Antwort auf die eigentliche Frage gegeben.</p>
</blockquote>
<p>Doch, habe ich. Sie war vielleicht nicht tiefgründig oder ausführlich, aber es war eine Antwort.</p>
</blockquote>
<p>Wer natürlich derart niedrige Anforderungen an eine Aussage stellt, um sie &quot;Antwort&quot; nennen zu dürfen, hat's auch nicht schwer - solle sich aber auch nicht wundern, wenn er wenig Freunde hat.</p>
<p>Im übrigen wäre ja auch eine <em>falsche</em> Antwort eine Antwort ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733165</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 26 Jun 2009 09:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 10:13:04 GMT]]></title><description><![CDATA[<blockquote>
<p>wenn er wenig Freunde hat.</p>
</blockquote>
<p>Habe ich wenig Freunde? <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/1733204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733204</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Fri, 26 Jun 2009 10:13:04 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 10:45:28 GMT]]></title><description><![CDATA[<p>Halt doch einfach die Klappe Kóyaánasqatsi. Vor allem, da du ja offensichtlich nicht so viel Ahnung hast. Der OP fragte explizit nach dem _Sinn_ und es macht eben keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733219</guid><dc:creator><![CDATA[schneiderr]]></dc:creator><pubDate>Fri, 26 Jun 2009 10:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 10:45:29 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Bei normalen Klassen sollte man Memberfunktionen grundsätzlich nicht im Header definieren.</p>
</blockquote>
<p>Hallo Nexus,</p>
<p>Was heißt &quot;normale Klasse&quot;? Nicht-Templateklassen?</p>
<p>Die ursprüngliche Frage mal anders herum: Wann sind Definitionen im Header sinnvoll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733220</guid><dc:creator><![CDATA[Roger Wilco]]></dc:creator><pubDate>Fri, 26 Jun 2009 10:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 11:26:07 GMT]]></title><description><![CDATA[<p>Regt euch nicht über Kóyaánasqatsi auf. Die Tatsache, dass er früher als &quot;way&quot; unterwegs war, sagt eigentlich bereits alles. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Roger Wilco schrieb:</p>
<blockquote>
<p>Hallo Nexus,</p>
<p>Was heißt &quot;normale Klasse&quot;? Nicht-Templateklassen?</p>
</blockquote>
<p>Ja, so habe ich es gemeint.</p>
<p>Roger Wilco schrieb:</p>
<blockquote>
<p>Die ursprüngliche Frage mal anders herum: Wann sind Definitionen im Header sinnvoll?</p>
</blockquote>
<p>Wenn man weiss, was nicht sinnvoll ist, kann man doch auf das Sinnvolle schliessen. <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>
<p>Einige Leute definieren ganz kurze Methoden wie Setter und Getter im Header (inline). Ich schreibe deren Definitionen auch in Implementierungsdateien, Inlining-Optimierung sollte wie erwähnt trotzdem möglich sein. Ein wenig ist da auch Geschmackssache dabei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733241</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 26 Jun 2009 11:26:07 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 11:32:31 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Roger Wilco schrieb:</p>
<blockquote>
<p>Die ursprüngliche Frage mal anders herum: Wann sind Definitionen im Header sinnvoll?</p>
</blockquote>
<p>Wenn man weiss, was nicht sinnvoll ist, kann man doch auf das Sinnvolle schliessen. <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>Ich habe ja auch meine Frage erweitert und ganz allgemein von Definitionen gesprochen. Nicht nur von Klassen-Definitionen. <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/1733246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733246</guid><dc:creator><![CDATA[Roger Wilco]]></dc:creator><pubDate>Fri, 26 Jun 2009 11:32:31 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 11:41:02 GMT]]></title><description><![CDATA[<p>Ah, ich dachte, es ginge immer noch um Memberfunktionen. Globale Funktionen verhalten sich übrigens gleich (abgesehen von &quot;impliziten inline&quot; innerhalb der Klasse, das bei globalen Funktionen nicht geht).</p>
<p>Klassen- und Namensraumdefinitionen sind unbestritten sinnvoll im Header. Typdefinitionen eigentlich auch, wenn sie benötigt werden (je nachdem auch innerhalb von Klassen oder Namensräumen).</p>
<p>Bei Variablen hingegen musst du die Definition in den meisten Fällen in der .cpp-Datei vornehmen, da du sonst Linkerfehler wegen mehrfach definierten Symbolen erhältst. Ausnahmen sind statische konstante integrale Variablen. Da kann es sinnvoll sein, den Variablenwert für den Compiler sichtbar zu machen (zum Beispiel bei Template-Metaprogrammierung). Andererseits gilt hier natürlich auch wieder, dass bei einer Änderung des Wertes ein Neu-Kompilieren aller header-benutzenden Dateien notwendig wird. Auch Konstanten von <code>enum</code> s müssen im Header definiert werden, sofern der <code>enum</code> -Typ bekannt sein soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733251</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 26 Jun 2009 11:41:02 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 19:39:56 GMT]]></title><description><![CDATA[<p>Bedanke mich für die ausführlichen Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733480</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Fri, 26 Jun 2009 19:39:56 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Fri, 26 Jun 2009 22:34:10 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<blockquote>
<p>wenn er wenig Freunde hat.</p>
</blockquote>
<p>Habe ich wenig Freunde? <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>
</blockquote>
<p>Habe ich das behauptet?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733553</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 26 Jun 2009 22:34:10 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Sat, 27 Jun 2009 07:41:00 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<blockquote>
<p>wenn er wenig Freunde hat.</p>
</blockquote>
<p>Habe ich wenig Freunde? <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>
</blockquote>
<p>Habe ich das behauptet?</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733576</guid><dc:creator><![CDATA[way]]></dc:creator><pubDate>Sat, 27 Jun 2009 07:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeine Frage zur Klassendeklaration&#x2F;definition on Sat, 27 Jun 2009 19:33:28 GMT]]></title><description><![CDATA[<p>way schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<blockquote>
<p>wenn er wenig Freunde hat.</p>
</blockquote>
<p>Habe ich wenig Freunde? <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>
</blockquote>
<p>Habe ich das behauptet?</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Ja.</p>
</blockquote>
<p>Wo?</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>...<br />
Wer natürlich derart niedrige Anforderungen an eine Aussage stellt, um sie &quot;Antwort&quot; nennen zu dürfen, hat's auch nicht schwer - sollte sich aber auch nicht wundern, wenn er wenig Freunde hat.</p>
<p>Im übrigen wäre ja auch eine <em>falsche</em> Antwort eine Antwort ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733805</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 27 Jun 2009 19:33:28 GMT</pubDate></item></channel></rss>