<?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[Programmierstil Konstruktor&#x2F;Destruktor]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe eine kurze Frage und zwar gilt es in C++ als schöner Stil, wenn man stets die Prototypen des Standardkonstruktors und des Destruktors in der Klassendeklaration angibt, auch wenn diese evtl. nichts explizites tun und somit in der .cpp nicht näher definiert werden?</p>
<p>Gruß und schönes Wochenende <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/topic/301616/programmierstil-konstruktor-destruktor</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 22:44:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301616.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Mar 2012 03:29:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programmierstil Konstruktor&#x2F;Destruktor on Sat, 31 Mar 2012 03:29:52 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe eine kurze Frage und zwar gilt es in C++ als schöner Stil, wenn man stets die Prototypen des Standardkonstruktors und des Destruktors in der Klassendeklaration angibt, auch wenn diese evtl. nichts explizites tun und somit in der .cpp nicht näher definiert werden?</p>
<p>Gruß und schönes Wochenende <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/2197192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197192</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Sat, 31 Mar 2012 03:29:52 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierstil Konstruktor&#x2F;Destruktor on Sat, 31 Mar 2012 04:42:34 GMT]]></title><description><![CDATA[<p>Nein, Pfui Teufel!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2197195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197195</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 31 Mar 2012 04:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierstil Konstruktor&#x2F;Destruktor on Sat, 31 Mar 2012 06:32:01 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Nein, Pfui Teufel!</p>
</blockquote>
<p>Und wer dich kennt, sieht in dem Beitrag schon wieder den Wunsch nach einem Flame <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="🙄"
    /><br />
Einfach ohne Begründung rummotzen...</p>
<p>Also:<br />
Es ist schlecht, das zu deklarieren, da damit dem Compiler signalisiert wird &quot;mach ich selber&quot; und er nichts automatisch generiert. Damit bist du in der Pflicht, die Implementierung abzuliefern, auch wenn du nichts explizites darin tust. Du bekommst dann beim Linken eine undefined reference.<br />
Das ist also keine Stilfrage, da Stil erst dann was bringt, wenn das erreichte korrekt ist.</p>
<p>BTW.:<br />
In einer KlassenDEKLARATION kann man keine Funktionen angeben, das geht nur in der KlassenDEFINITION.<br />
Und dann noch der obligatorische Hinweis auf C++11: hier geht die Deklaration ohne Definition SEHR WOHL und ist in gewissen Fällen sogar nötig! Siehe Schlüsselwörter &quot;default und delete&quot;. (wundert mich, dass das PI jetzt nicht gebracht hat...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2197202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197202</guid><dc:creator><![CDATA[arghonaut]]></dc:creator><pubDate>Sat, 31 Mar 2012 06:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierstil Konstruktor&#x2F;Destruktor on Sat, 31 Mar 2012 08:49:34 GMT]]></title><description><![CDATA[<p>Danke für deine Antwort und Sorry für das Durcheinanderhauen der Begriffe, hab nicht gut nachgedacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Wäre es demnach besser Konstruktor und Destruktor in der Klassendefinition komplett zu ignorieren oder sollte man so etwas machen wie:</p>
<pre><code class="language-cpp">class A {

public:

   A() {}
  ~A() {}
};
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">// A.h
class A {

public:

   A();
  ~A();

};

// A.cpp

A::A(){}

A::~A(){}
</code></pre>
<p>Und noch eine kurze Frage zu deinem Hinweis am Ende, kann nicht auch in den älteren C++ Standards (also vor dem 2011) Klassendeklaration und Klassendefinition trennen, also so z.B. so etwas machen wie:</p>
<pre><code class="language-cpp">class A;

// hier passiert etwas mit class A ...

class A {

// Definition der Klasse A

};
</code></pre>
<p>Habe es gerade getestet, indem ich in der main-Funktion A einfach nur instantiere:</p>
<pre><code class="language-cpp">class A;

int main()

{
   A a;
}

class A {

// Definition der Klasse A

};
</code></pre>
<p>was problemlos klappt, jedoch funktioniert so etwas nicht:</p>
<pre><code class="language-cpp">class A;

class B : public A

{...}

// hier passiert wieder etwas

class A {

// Definition der Klasse A

};
</code></pre>
<p>Weißt du evtl. wie hier die Regel ist?</p>
<p>Gruß <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/2197219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197219</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Sat, 31 Mar 2012 08:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierstil Konstruktor&#x2F;Destruktor on Sat, 31 Mar 2012 09:26:10 GMT]]></title><description><![CDATA[<p>die vererbte klasse muss schon vollständig bekannt sein</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2197232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197232</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Sat, 31 Mar 2012 09:26:10 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierstil Konstruktor&#x2F;Destruktor on Sat, 31 Mar 2012 15:07:56 GMT]]></title><description><![CDATA[<p>MatheStein schrieb:</p>
<blockquote>
<p>Habe es gerade getestet, indem ich in der main-Funktion A einfach nur instantiere:</p>
<pre><code class="language-cpp">class A;

int main()
{
   A a;
}

class A
{
// Definition der Klasse A
};
</code></pre>
<p>was problemlos klappt, jedoch funktioniert so etwas nicht:</p>
</blockquote>
<p>Ich weiss nicht wie du das getestet hast, aber das geht so eben nicht. In main() ist ja nichts über die Klasse A bekannt, also kann man sie auch nicht instanzieren. Könnte ja sein dass A keinen öffentlichen Konstruktor hat der ohne Parameter auskommt, oder der Destruktor private ist oder was auch immer.</p>
<p><a href="http://ideone.com/7O9Uq" rel="nofollow">http://ideone.com/7O9Uq</a></p>
<pre><code>prog.cpp: In function ‘int main()’:
prog.cpp:5: error: aggregate ‘A a’ has incomplete type and cannot be defined
prog.cpp:5: warning: unused variable ‘a’
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2197350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197350</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 31 Mar 2012 15:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierstil Konstruktor&#x2F;Destruktor on Sat, 31 Mar 2012 15:21:02 GMT]]></title><description><![CDATA[<p>Danke für deine Antwort, keine Ahnung was ich da vorhin gemacht, jetzt bekomme ich auch einen Fehler <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>
<p>Gruß <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/2197357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2197357</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Sat, 31 Mar 2012 15:21:02 GMT</pubDate></item></channel></rss>