<?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[Welche Art von Methoden sollten alle ins Headerfile zur Klasse?]]></title><description><![CDATA[<p>Servus,</p>
<p>als Java-Freund ist mir das mit den Header-Files ja etwas fremd. Sollen ins Header-File der Klasse eher nur die public-Methoden rein oder auch die private-Methoden?</p>
<p>Nach welchen Kriterien entscheidet ihr bei rein prozeduralem Code, ob ihr Funktionsprototypen schreibt oder wann ihr direkt Funktions-Kopf und -Rumpf an Ort Stelle reinschreibt. Ab wann verwendet ihr inline-Funktionen?</p>
<p>Variante 1:</p>
<p>func1(){ ... }<br />
func2(){ ... }<br />
main(){ ... }</p>
<p>Variante 2:</p>
<p>func1();<br />
func2();<br />
main(){ ... }<br />
func1(){ ... }<br />
func2(){ ... }</p>
<p>Danke vorab.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/280650/welche-art-von-methoden-sollten-alle-ins-headerfile-zur-klasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 01:15:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280650.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Jan 2011 23:37:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Tue, 18 Jan 2011 23:37:55 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>als Java-Freund ist mir das mit den Header-Files ja etwas fremd. Sollen ins Header-File der Klasse eher nur die public-Methoden rein oder auch die private-Methoden?</p>
<p>Nach welchen Kriterien entscheidet ihr bei rein prozeduralem Code, ob ihr Funktionsprototypen schreibt oder wann ihr direkt Funktions-Kopf und -Rumpf an Ort Stelle reinschreibt. Ab wann verwendet ihr inline-Funktionen?</p>
<p>Variante 1:</p>
<p>func1(){ ... }<br />
func2(){ ... }<br />
main(){ ... }</p>
<p>Variante 2:</p>
<p>func1();<br />
func2();<br />
main(){ ... }<br />
func1(){ ... }<br />
func2(){ ... }</p>
<p>Danke vorab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008572</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Tue, 18 Jan 2011 23:37:55 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Tue, 18 Jan 2011 23:46:06 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Sollen ins Header-File der Klasse eher nur die public-Methoden rein oder auch die private-Methoden?</p>
</blockquote>
<p>Auch die <code>private</code> -Memberfunktionen. Du musst ja alle Member in der Klassendefinition deklarieren. Aber wenn du Funktionen hast, die keinen direkten Zugriff auf <code>private</code> -Member ades Objekts benötigen, kannst du sie auch als freie Funktionen erst in der .cpp-Datei definieren.</p>
<p>Jay1980 schrieb:</p>
<blockquote>
<p>Nach welchen Kriterien entscheidet ihr bei rein prozeduralem Code, ob ihr Funktionsprototypen schreibt oder wann ihr direkt Funktions-Kopf und -Rumpf an Ort Stelle reinschreibt. Ab wann verwendet ihr inline-Funktionen?</p>
</blockquote>
<p>Header oder nicht hat eigentlich nichts mit prozedural zu tun. Ich persönlich schreibe die Definition eigentlich immer in eine separate .cpp-Datei (ausser vielleicht bei kleinen Templates und Klassen, die ohnehin erst in der .cpp definiert werden). Der Code bleibt so übersichtlicher, man kann ihn ohne Rekompilierung aller Benutzer ändern, und mit Linkzeit-Codegenerierung ist er auch nicht langsamer.</p>
<p>Bei lokalen Funktionen in einer .cpp-Datei habe ich oft einen anonymen Namensraum mit den Definitionen am Anfang. Aber ich überlege mir, diesen an den Schluss zu verlagern, weil es halt schon schöner ist, wenn man am Anfang gleich die wirkliche Implementierung sieht. Dafür hat man Codeduplizierung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008573</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 18 Jan 2011 23:46:06 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Wed, 19 Jan 2011 11:01:33 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Nach welchen Kriterien entscheidet ihr bei rein prozeduralem Code, ob ihr Funktionsprototypen schreibt oder wann ihr direkt Funktions-Kopf und -Rumpf an Ort Stelle reinschreibt. Ab wann verwendet ihr inline-Funktionen?</p>
</blockquote>
<p>Funktionsprototypen verwende ich dann, wenn die Funktion über mehrere CPP-Dateien hinweg benutzt wird.<br />
Inline-Funktionen verwende ich bloß, wenn sie sehr kurz sind und oft verwendet werden.</p>
<p><a href="http://www.c-plusplus.net/forum/p1993089#1993089" rel="nofollow">http://www.c-plusplus.net/forum/p1993089#1993089</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008665</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Wed, 19 Jan 2011 11:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Wed, 19 Jan 2011 11:47:23 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Servus,</p>
<p>als Java-Freund ist mir das mit den Header-Files ja etwas fremd. Sollen ins Header-File der Klasse eher nur die public-Methoden rein oder auch die private-Methoden?</p>
</blockquote>
<p>In C++ gibt es zwar keine Unterscheidung zwischen class und interface wie in Java, aber man kann und sollte in den Schnittstellen abstrakte Klassen verwenden, so wie man es in Java mit Interfaces tut (oder tun sollte). Dann relativiert sich das Problem mit den private-Funktionen auch etwas.</p>
<p>Implementiert man jedoch z.B. eine Klasse complex, so ist sinnvoll die Funktionen aus Performancegründen inline im Header zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008687</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 19 Jan 2011 11:47:23 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Wed, 19 Jan 2011 15:14:43 GMT]]></title><description><![CDATA[<p>In C++ auch sehr ueblich ist es, das PIMPL-Idiom zu verwenden, um damit Abhaengigkeiten und laengere Kompilezeiten zu umgehen. Wenn du das tust, kannst du dir private-methoden im Header (der eigentlichen Klasse) auch sparen: <a href="http://en.wikipedia.org/wiki/Opaque_pointer" rel="nofollow">http://en.wikipedia.org/wiki/Opaque_pointer</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008804</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Wed, 19 Jan 2011 15:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Wed, 19 Jan 2011 15:40:30 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Implementiert man jedoch z.B. eine Klasse complex, so ist sinnvoll die Funktionen aus Performancegründen inline im Header zu haben.</p>
</blockquote>
<p>Nein. Das <code>inline</code> -Schlüsselwort (und implizite Inline-Methodendefinitionen) haben primär einen Einfluss auf die Linkage und sollten auch entsprechend verwendet werden. Ob ein Funktionsaufruf tatsächlich inline-expandiert wird, kann der Compiler in den meisten Fällen besser entscheiden.</p>
<p>Blue-Tiger schrieb:</p>
<blockquote>
<p>In C++ auch sehr ueblich ist es, das PIMPL-Idiom zu verwenden, um damit Abhaengigkeiten und laengere Kompilezeiten zu umgehen.</p>
</blockquote>
<p>Wobei &quot;sehr üblich&quot; vielleicht übertrieben ist. Grundsätzlich sind ja <code>private</code> -Member nicht etwas Schlimmes. Aber wenn man durch das Handle-Body-Idiom grosse Abhängigkeiten auslagern kann, lohnt sich ein Blick darauf. Nur sollte man bedenken, dass das auch nicht gratis ist (zusätzliche dynamische Allokation und indirekter Zugriff über Zeiger, ausserdem muss aufgrund fehlender sinnvoller Smart-Pointer-Implementierungen manuell Speicher verwaltet und konsistent gehalten werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008817</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 19 Jan 2011 15:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Wed, 19 Jan 2011 16:44:15 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>Implementiert man jedoch z.B. eine Klasse complex, so ist sinnvoll die Funktionen aus Performancegründen inline im Header zu haben.</p>
</blockquote>
<p>Nein. Das <code>inline</code> -Schlüsselwort (und implizite Inline-Methodendefinitionen) haben primär einen Einfluss auf die Linkage und sollten auch entsprechend verwendet werden. Ob ein Funktionsaufruf tatsächlich inline-expandiert wird, kann der Compiler in den meisten Fällen besser entscheiden.</p>
</blockquote>
<p>Ich verstehe nicht, was du meinst.</p>
<pre><code class="language-cpp">struct A
{
  inline void a() {}
  void b();
};

inline void A::b()
{
}
</code></pre>
<p>Bei Funktion a verhält sich der Compiler unabhängig vom Schlüsselwort inline immer gleich, Funktion b wäre ohne das Schlüsselwort mehrfach definiert, wenn der Header mehrfach benutzt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008852</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 19 Jan 2011 16:44:15 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Wed, 19 Jan 2011 16:46:45 GMT]]></title><description><![CDATA[<p>Eben. Du benutzt <code>inline</code> zur Regelung der Linkage (keine Mehrfachdefinitionen) und nicht der Performance.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008853</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 19 Jan 2011 16:46:45 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Wed, 19 Jan 2011 17:01:19 GMT]]></title><description><![CDATA[<p>Nein, ich schreibe die Funktionen aus Performancegründen in den Header, damit Compiler sie ohne &quot;echten&quot; Funktionsaufruf direkt auflösen (eben inlinen) kann. Bei hinreichend vielen Funktionsaufrufen spart das Zeit. Das Schlüsselwort inline ist dabei manchmal notwendig, manchmal nicht.</p>
<p>Entscheiden bei meiner Aussage war, die Funktion in den Header zu schreiben. Ich meinte nicht, das Schlüsselwort inline möglichst häufig zu gebrauchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008859</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 19 Jan 2011 17:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to Welche Art von Methoden sollten alle ins Headerfile zur Klasse? on Wed, 19 Jan 2011 17:07:30 GMT]]></title><description><![CDATA[<p><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>Hier was fundiertes zum Thema:<br />
<a href="http://www.gotw.ca/gotw/033.htm" rel="nofollow">http://www.gotw.ca/gotw/033.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008862</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 19 Jan 2011 17:07:30 GMT</pubDate></item></channel></rss>