<?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[Wie mache ich eine Klasse virtuell]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich möchte eine Klasse virtuell machen, damit ich von ihr ableiten kann.<br />
Wie geht das, wenn ich keine abstarkte Funktionen haben?</p>
<p>Danke im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144878/wie-mache-ich-eine-klasse-virtuell</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 19:47:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144878.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Apr 2006 16:18:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:18:23 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich möchte eine Klasse virtuell machen, damit ich von ihr ableiten kann.<br />
Wie geht das, wenn ich keine abstarkte Funktionen haben?</p>
<p>Danke im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042775</guid><dc:creator><![CDATA[Gast2176584]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:18:23 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:20:26 GMT]]></title><description><![CDATA[<p>Meines wissens gibt es nur virtuelle funktionen, das sind solche die von einer abgeleiteten Klasse überschrieben werden können.<br />
Das amchst du einfach in dem du vor die entsprechnde Funktion virtuel hinschreibts.</p>
<p>PS: Zeig uns mal was du amchen wills, sprich den code</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042778</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:20:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:23:18 GMT]]></title><description><![CDATA[<p>Du kannst in C++ prinzipiell von jeder Klasse erben, so etwas wie sealed (C#) gibt es nicht.</p>
<p>Willst du deine Klasse abstrakt machen, aber keine geeignete Funktion hast, die du rein-virtuell machen könntest, dann mach den Destruktor rein-virtuell (du musst ihn dennoch definieren!).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042782</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:23:54 GMT]]></title><description><![CDATA[<p>Gast2176584 schrieb:</p>
<blockquote>
<p>Ich möchte eine Klasse virtuell machen, damit ich von ihr ableiten kann.<br />
Wie geht das, wenn ich keine abstarkte Funktionen haben?</p>
</blockquote>
<p>Wie wär's mit dem Destruktor, der sollte ohne hin virtuell sein. Oder meinst du &quot;abstrakt&quot; im Sinne von nicht instanziierbar? Dann mach einfach den/die Konstruktoren protected.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042783</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:25:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class object
{
public
    object();
    ~object();
    int getID();
    void setID(int ID_);
private
    int ID;
}

class visibelObject: class object
{
public
    visibleObject();
    ~visibleObject();
    void paint( int x_, int y_);
}
</code></pre>
<p>so ähnlich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042786</guid><dc:creator><![CDATA[Gast138646]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:25:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:29:56 GMT]]></title><description><![CDATA[<p>Wenn du eine abstrakte (Synonym rein-virtuelle) Klasse erstellen willst, muss mindestens eine der Methoden dieser Klasse rein-virtuell sein. Die Methoden kennzeichnen sich durch Deklaration als virtual und durch ein angehängtes =0. Warum soll er den Destruktor rein-virtuell machen? Das ist ein wiederspruch in sich. Um Instanzen von einer abgeleiteten Klassse zu machen, müssen alle rein-virtuellen Fkt. überschrieben werden. Man kann aber keine Destruktoren überschreiben. Man soll den Destruktor als virtual deklarieren, damit bei gegebener Speicherverwaltung z.B. mit Zeigern der richtige Destruktor aufgerufen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042789</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:29:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:31:13 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">virtual ~object() = 0;
</code></pre>
<p>so macht man den d'tor virtuell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042791</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:37:58 GMT]]></title><description><![CDATA[<p>lucky_tux schrieb:</p>
<blockquote>
<p>Warum soll er den Destruktor rein-virtuell machen? Das ist ein wiederspruch in sich. Um Instanzen von einer abgeleiteten Klassse zu machen, müssen alle rein-virtuellen Fkt. überschrieben werden.</p>
</blockquote>
<p>Falsch, sie müssen von der abgeleiteten Klasse definiert werden.</p>
<blockquote>
<p>Man soll den Destruktor als virtual deklarieren, damit bei gegebener Speicherverwaltung z.B. mit Zeigern der richtige Destruktor aufgerufen wird.</p>
</blockquote>
<p>Dafür macht man ihn virtuell. Rein-virtuell macht man ihn allerdings aus von mir oben genanntem Grund, nämlich um die Klasse abstrakt zu machen.</p>
<p>1310-Logik: Nein, der Destruktor muss definiert werden, also so:</p>
<pre><code class="language-cpp">virtual ~object() = 0
{
    // ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1042798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042798</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:40:50 GMT]]></title><description><![CDATA[<p>Danke erstmal<br />
Werd den Detonator mal virtuell setzten und dann schauen ob es geht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20068">@Michael</a><br />
C/C++ Code:<br />
virtual ~object() = 0<br />
{<br />
// ...ist diese leere Zeile nötig?<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042799</guid><dc:creator><![CDATA[Gast1634416]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:43:33 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>1310-Logik: Nein, der Destruktor muss definiert werden, also so:</p>
<pre><code class="language-cpp">virtual ~object() = 0
{
    // ...
}
</code></pre>
</blockquote>
<p>huch ach ja, wieder was vergessen. copy paste ist verfänglich..<br />
thx</p>
<pre><code class="language-cpp">virtual ~object() = 0 {}
</code></pre>
<p>So gehts doch auch oder?<br />
Dann brauch ich keine Implementation in der *.cpp Datei, oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042803</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 16:47:11 GMT]]></title><description><![CDATA[<p>Gast1634416 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20068">@Michael</a><br />
C/C++ Code:<br />
virtual ~object() = 0<br />
{<br />
// ...ist diese leere Zeile nötig?<br />
}</p>
</blockquote>
<p>Nö, is ne Kommentarzeile, da kommt halt der Inhalt des Destruktors rein, sofern du überhaupt was reinschreiben willst.</p>
<p>1310-Logik: Türlich geht das auch. Kannst du auch in der Header-Datei stehen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042808</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sat, 22 Apr 2006 16:47:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 20:26:40 GMT]]></title><description><![CDATA[<p>Nein so geht es nicht! Total falsche Logik!</p>
<p>Virtuelle Methoden sind nicht zu verwechseln mit rein-virtuellen Methoden. Die Deklaration als virtual besagt nur, dass wenn die Methode von einer abgeleiteten Klasse überschrieben wird bei dem gebrauch von Basisklassenzeigern die richtige Methode aufgerufen wird.</p>
<p>Für rein-virtuelle Methoden gilt das gleiche. Nur kommt ein sehr entscheidender Punkt hinzu: Die Deklaration als rein-virtuell (virtual /* ... */ =0; ) besagt, dass noch keine Implementierung zu dem jetzigen Zeitpunk möglich ist. Man kann die Funktion nicht definieren!! Dieses Konzept dient allein dem Gebrauch in gemeinsamen Schnittstellen. Die Methode wird in den abgeleiteten Klassen implementiert. Geschieht dies nicht handelt es sich bei der abgeleiteten Klasse automatisch um eine rein-virtuelle / abstrakte Klasse.</p>
<p>Michael E: Ich glaube du hat mich nicht verstanden. Vlt verwechselst du virtuelle Methoden mit rein-virtuellen Methoden (ein himmelweiter Unterschied). Wenn man den Destruktor als rein-virtuell deklariert, dann darf es in der Klasse keine Implementierung geben, diese müsste in der abgeleiteten Klasse vorkommen. Destruktoren lassen sich aber nicht überschreiben. Das ist ein Wiederspruch! <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>
<p>Wenn ich meinen Compiler zitieren darf.</p>
<pre><code class="language-cpp">class Test
{
  public:
    Test() {}
    virtual ~Test() =0 {}
};

int main()
{
}
</code></pre>
<p>Das quitiert der Compiler mit folgenden Fehlermeldungen<br />
main.cpp:5: error: Fehler beim Parsen before <code>{' token main.cpp:5: error: missing ';' before right brace main.cpp:6: error: Fehler beim Parsen before</code>}' token</p>
<pre><code class="language-cpp">class Test
{
  public:
    Test() {}
    virtual ~Test() =0; // {}
};

class T2 : Test
{
  public:
    T2() {}
    virtual ~Test()
    {
    }

int main()
{
}
</code></pre>
<p>main.cpp:14: error: destructor `Test' must match class name `T2'<br />
main.cpp:19: error: Fehler beim Parsen at end of input</p>
<p>Glaubt ihr es mir jetzt? <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/1042989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042989</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 22 Apr 2006 20:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 20:56:05 GMT]]></title><description><![CDATA[<p>Hmm jo, ich hab mich in der Hinsicht vertan, dass rein-virtuelle Funktionen einen Körper haben dürfen (Hinweis: MSVC++ 2003 erlaubts).</p>
<p>lucky_tux schrieb:</p>
<blockquote>
<p>Destruktoren lassen sich aber nicht überschreiben. Das ist ein Wiederspruch! <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>Hier liegst du allerdings falsch. Meyers benutzt z. B. in &quot;Mehr Effektiv C++ Programmieren&quot; Richtlinie 33 einen rein-virtuellen Destruktor.</p>
<p>MECP Richtlinie 33 schrieb:</p>
<blockquote>
<p>[...]aber bei seltenen Gelegenheiten sind Sie damit konfrontiert, daß Sie eine Klasse wie AbstractAnimal erzeugen müssen, in der keine der Funktionen natürlicherweise rein virtuell ist. In solchen Fällen ist das übliche Vorgehen, den Destruktor rein virtuell zu machen; [...]</p>
</blockquote>
<p>Außerdem sagt der Standard folgendes unter 12.4.7:</p>
<blockquote>
<p>A destructor can be declared virtual or pure virtual; if any objects of that class or any derived class are created in the program, the destructor shall be defined. If a class has a base class with a virtual destructor, its destructor (whenever user- or implicitly-declared) is virtual.</p>
</blockquote>
<p>Also ist mein Vorgehen, nämlich eine Klasse abstrakt zu machen, indem man den Destruktor rein-virtuell macht, richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043001</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sat, 22 Apr 2006 20:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 21:02:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct foo
{
  virtual ~foo() = 0;
};
foo::~foo() { }

struct bar : foo
{
  virtual void whatever() = 0;
};
void bar::whatever() { std::cout &lt;&lt; &quot;...&quot; &lt;&lt; std::endl; }

struct baz : bar
{
  void whatever();
};
void baz::whatever() { bar::whatever(); }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1043008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043008</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 22 Apr 2006 21:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 21:04:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Man kann die Funktion nicht definieren!!</p>
</blockquote>
<p>Doch und ob man das kann.</p>
<p>ISO Standard 10.4/2 schrieb:</p>
<blockquote>
<p>An abstract class is a class that can be used only as a base class of some other class; no objects of an abstract class can be created except as subobjects of a class derived from it. A class is abstract if it has at least one pure virtual function. A virtual function is specified pure by using a purespecifier (9.2) in the function declaration in the class declaration. A pure virtual function <strong>need be defined</strong> only if explicitly called with the qualifiedid syntax (5.1).</p>
</blockquote>
<p>Folgender Code ist absolut korrekt:</p>
<pre><code class="language-cpp">class Foo{
public:
  virtual void bar()=0;
};

void Foo::bar(){

}
</code></pre>
<p>Bedenkte ich kann Foo::bar immer aufrufen wenn ich Foo::bar und nicht nur bar schreibe.</p>
<p>Da ein Destruktor immer implizit den Destruktor der Basisklasse aufruft muss dieser definiert sein.</p>
<p>Was allerdings nicht geht ist folgendes</p>
<pre><code class="language-cpp">class Foo{
public:
  virtual void bar()=0{};
};
</code></pre>
<p>Eine pure virtuelle Funktion kann nicht in der Klassendefinition definiert werden.</p>
<p>Wieso er bei deinem zweitem Bespiel meckert sollte offensichtlich sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043009</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Sat, 22 Apr 2006 21:04:02 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 22:24:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Basis
{
public:
  virtual ~Basis() =0;
};

Basis::~Basis()
{ /* ... */ }

class Abgeleitet : public Basis
{
public:
  virtual ~Abgeleitet() =0;
};

Abgeleitet::~Abgeleitet()
{ /* ... */ }

int main()
{
  // Basis a;
  Abgeleitet a;
}
</code></pre>
<p>main.cpp: In function <code>int main()': main.cpp:28: error: cannot declare variable \</code>a' to be of type `Abgeleitet'<br />
main.cpp:28: error: because the following virtual functions are abstract:<br />
main.cpp:21: error: virtual Abgeleitet::~Abgeleitet()<br />
main.cpp:21: error: virtual Abgeleitet::~Abgeleitet()</p>
<p>Dass es nicht möglich ist eine Instanz von der Klasse Basis zu erstellen ist klar, da es sich hiebei um eine rein-virtuelle Schnittstelle handelt. Dieses Interface dient der Klasse Abgeleitet als Basisklasse. Wenn es stimmt, was du sagst, muss es möglich sein eine Instanz von der Klasse Abgeleitet zu erstellen, _ohne_ die Deklaration der Klasse Basis zu veränder. Wenn du mir eine Möglichkeit zeigst, eine Instanz von der Klasse Abgeleitet zu erzeugen muss ich eingestehen, dass du Recht hast... Jetzt bin ich gespannt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043069</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 22 Apr 2006 22:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 22:44:08 GMT]]></title><description><![CDATA[<p>Bitteschön</p>
<pre><code class="language-cpp">class Basis
{
public:
  virtual ~Basis() =0;
};

Basis::~Basis()
{ /* ... */ }

class Abgeleitet : public Basis
{
public:
  virtual ~Abgeleitet();
};

Abgeleitet::~Abgeleitet()
{ /* ... */ }

int main()
{
  // Basis a;
  Abgeleitet a;
}
</code></pre>
<p>Du hast abgeleitet (unabsichtlich?) ebenfalls zu ner abstrakten Klasse gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043074</guid><dc:creator><![CDATA[Dr. Prof]]></dc:creator><pubDate>Sat, 22 Apr 2006 22:44:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sat, 22 Apr 2006 22:46:15 GMT]]></title><description><![CDATA[<p>Keiner hat behauptet, das alle pure virtual sein sollen. Irgendwann muß sich das ändern. Das hat aber auch keiner anders behauptet, worauf Du also gespannt bist ist mir schleierhaft.</p>
<p>Das hingegen:</p>
<pre><code class="language-cpp">class Basis
{
public:
  virtual ~Basis() =0;
};

Basis::~Basis()
{ /* ... */ }

class Abgeleitet : public Basis
{
public:
  virtual ~Abgeleitet(); // = 0;
};

Abgeleitet::~Abgeleitet()
{ /* ... */ }

int main()
{
  // Basis a;
  Abgeleitet a;
}
</code></pre>
<p>geht wunderbar, und ich habe nicht die Deklaration von Basis verändert, ganz wie gewünscht. Destruktor rein-virtuell und mit Definition schliessen sich also nicht aus. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043075</guid><dc:creator><![CDATA[Hä?]]></dc:creator><pubDate>Sat, 22 Apr 2006 22:46:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sun, 23 Apr 2006 00:10:15 GMT]]></title><description><![CDATA[<p>Alle rein-virtuellen Methoden müssen überschrieben werden, damit von einer Klasse instanzen gemacht werden können. Ich bin fest davon ausgegangen, dass man den Destruktor einer Klasse nicht überschreiben kann, da sich die Signatur des Destruktors ändert. Du hast gewonnen und ich hab noch ein wenig dazugelernt! <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="🙂"
    /><br />
Ich habe mich zwar mit Sachen wie z.B. die Metaprogrammierung beschäftigt, aber dass man Destruktoren rein-virtuell deklarieren kann das war mir neu...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043081</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 23 Apr 2006 00:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sun, 23 Apr 2006 08:21:52 GMT]]></title><description><![CDATA[<p>Ich wusst doch, dass ich irgendwo gelesen hab, dass virtuelle Funktionen nen Körper haben dürfen... Naja, jetzt werd ich mirs merken <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/1043131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043131</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 23 Apr 2006 08:21:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sun, 23 Apr 2006 12:13:43 GMT]]></title><description><![CDATA[<p>rein virtuelle Funktionen dürfen so oder so einen Funktionskörper sprich eine Definition haben, das ist keine Frage. Sicher meinst du die rein-virtuellen Funktionen.</p>
<p>Das ist schon ein wenig verwirrend, die Ähnlichkeit der beiden Begriffe und die doch teils völlig unterschiedliche Anwendung <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>
<p>Aber nun gut ich glaube jetzt hat sich das Thema ausdiskutiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043257</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 23 Apr 2006 12:13:43 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sun, 23 Apr 2006 12:17:05 GMT]]></title><description><![CDATA[<p>Türlich, hab das &quot;rein-&quot; vergessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043262</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 23 Apr 2006 12:17:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sun, 23 Apr 2006 17:58:44 GMT]]></title><description><![CDATA[<p>Also es gibt virtuelle Klassen diese funktion dient jedoch nicht dazu das du von einer Klasse erben kannst (das geht immer).<br />
Wenn eine Klasse virtual deklariert wurde dann verhindert das die Klasse ausversehen 2mal geerbt wurde.<br />
Bsp:</p>
<p>Klasse A<br />
Klasse B<br />
Klasse C<br />
Klasse D</p>
<p>Die Klassen B und C erben von A und D erbt von B und C<br />
Jetzt enhält D zweimal A(was zu einem kompilerfehler führt).<br />
Das kann man verhindern indem man B und C virtual von A erben läss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043521</guid><dc:creator><![CDATA[tobZel]]></dc:creator><pubDate>Sun, 23 Apr 2006 17:58:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mache ich eine Klasse virtuell on Sun, 23 Apr 2006 18:07:00 GMT]]></title><description><![CDATA[<p>tobZel schrieb:</p>
<blockquote>
<p>Wenn eine Klasse virtual deklariert wurde dann verhindert das die Klasse ausversehen 2mal geerbt wurde.</p>
</blockquote>
<p>Das nennt sich virtuelle Vererbung :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043532</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 23 Apr 2006 18:07:00 GMT</pubDate></item></channel></rss>