<?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[pure virtual + static]]></title><description><![CDATA[<p>Warum (oder doch?) kann man keine Funktion</p>
<pre><code class="language-cpp">virtual static void someFuntion(void) = 0;
</code></pre>
<p>definieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128963/pure-virtual-static</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 22:51:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128963.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Dec 2005 19:24:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 19:24:06 GMT]]></title><description><![CDATA[<p>Warum (oder doch?) kann man keine Funktion</p>
<pre><code class="language-cpp">virtual static void someFuntion(void) = 0;
</code></pre>
<p>definieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937616</guid><dc:creator><![CDATA[myers]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 19:33:19 GMT]]></title><description><![CDATA[<p>myers schrieb:</p>
<blockquote>
<p>Warum (oder doch?) kann man keine Funktion</p>
<pre><code class="language-cpp">virtual static void someFuntion(void) = 0;
</code></pre>
<p>definieren?</p>
</blockquote>
<p>nap schau in dein buch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937627</guid><dc:creator><![CDATA[nap]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:33:19 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 19:38:55 GMT]]></title><description><![CDATA[<p><div class="plugin-markdown"><input type="checkbox" id="checkbox43036" /><label for="checkbox43036">Du hast den Sinn der Schlüsselworte verstanden.</label></div></p>
]]></description><link>https://www.c-plusplus.net/forum/post/937632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937632</guid><dc:creator><![CDATA[kreuz]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 19:45:59 GMT]]></title><description><![CDATA[<p>krieg ich eine erklährung oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937639</guid><dc:creator><![CDATA[myers]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:45:59 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 19:52:04 GMT]]></title><description><![CDATA[<p>Hausaufgaben machen wir hier nicht für dich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937643</guid><dc:creator><![CDATA[asndo]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 19:54:50 GMT]]></title><description><![CDATA[<p>Ich frage mich das gerade, weil ich es probiert habe. Nun geht es nicht, ich finde keine Erklährung, deswegen frage ich.</p>
<p>Ist daran was falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937644</guid><dc:creator><![CDATA[myers]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:54:50 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 20:16:27 GMT]]></title><description><![CDATA[<p>Eine virtuelle static-Funktion macht doch gar keinen Sinn. Ließ doch mal nach was du mit virtuellen Funktionen machen kannst, du wirst feststellen, dass bei Durchführung dieser Aktionen ein Objekt vorhanden sein muss.</p>
<p>static heißt nun aber, dass eben kein Objekt vorhanden ist.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937665</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 08 Dec 2005 20:16:27 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 20:19:35 GMT]]></title><description><![CDATA[<p>Dass dabei kein Objekt vorhanden sein muss ist mirklar,nur warum muss für virtual ein Objekt vorhanden sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937666</guid><dc:creator><![CDATA[myers]]></dc:creator><pubDate>Thu, 08 Dec 2005 20:19:35 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 20:25:59 GMT]]></title><description><![CDATA[<p>Zeig mir eine Anwendung von virtual wo du kein Objekt benötigst, bzw. weißt du überhaupt was virtual macht? <a href="http://tutorial.schornboeck.net/virtual.htm" rel="nofollow">http://tutorial.schornboeck.net/virtual.htm</a></p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937672</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 08 Dec 2005 20:25:59 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 20:26:34 GMT]]></title><description><![CDATA[<p>Ohne object machts keinen sinn zur Laufzeit festzustellen von welchem typ das nicht vorhandene objekt ist um abhängig vom typ des nicht vorhandenen objects zu entscheiden welche methode aufgerufen werden soll.<br />
Ist das eine ausreichende Erklärung ?<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937674</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Thu, 08 Dec 2005 20:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 20:27:43 GMT]]></title><description><![CDATA[<p>Ok, verstanden. Trotzdem muss man da doch nicht gleich so rumtönen wie die beiden unregistrierten da oben...</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937676</guid><dc:creator><![CDATA[myers]]></dc:creator><pubDate>Thu, 08 Dec 2005 20:27:43 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 20:34:09 GMT]]></title><description><![CDATA[<p>Selbst wenn es Sinn machen würde, wie sollte es funktionieren?</p>
<pre><code class="language-cpp">struct foo { virtual static void whatever() = 0; };
struct bar : foo { virtual static void whatever() {} };
struct baz : foo { virtual static void whatever() = {} };

int main() { foo::whatever(); /* welche Methode wird denn jetzt aufgerufen? */ }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/937681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937681</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 08 Dec 2005 20:34:09 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 20:40:04 GMT]]></title><description><![CDATA[<p>myers schrieb:</p>
<blockquote>
<p>Trotzdem muss man da doch nicht gleich so rumtönen wie die beiden unregistrierten da oben...</p>
</blockquote>
<p>Da muss ich ihm Recht geben. Man sollte Menschen nicht wegen seinem Wissen runtermachen.</p>
<p>Er hat ganz normal gefragt, also sollte er auch ne normale Antwort bekommen. Man hat ja gesehen das er es noch nicht die ganze Sache mit virtual verstanden hat ...</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/937687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937687</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 08 Dec 2005 20:40:04 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Thu, 08 Dec 2005 20:44:48 GMT]]></title><description><![CDATA[<p>Ich hatte eben noch im Kopf, dass man mit <strong>pur</strong> virtuellen Funktionen(was ja meine Frage war) das Implementieren bei abgeleiteten Kalssen <em>&quot;erzwingen&quot;</em> kann.<br />
Vorausgesetzt man will nich wieder eine abstrakte Klasse.<br />
Das könnte ja auch bei einer statischen Funktion Sinn machen und eben das hatte ich eben probiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937692</guid><dc:creator><![CDATA[myers]]></dc:creator><pubDate>Thu, 08 Dec 2005 20:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Fri, 09 Dec 2005 08:55:43 GMT]]></title><description><![CDATA[<p>myers schrieb:</p>
<blockquote>
<p>Ich hatte eben noch im Kopf, dass man mit <strong>pur</strong> virtuellen Funktionen(was ja meine Frage war) das Implementieren bei abgeleiteten Kalssen <em>&quot;erzwingen&quot;</em> kann.<br />
Vorausgesetzt man will nich wieder eine abstrakte Klasse.<br />
Das könnte ja auch bei einer statischen Funktion Sinn machen und eben das hatte ich eben probiert.</p>
</blockquote>
<p>Welchen Sinn sollte es machen, die Implementierung einer statischen Methode in einer Subklasse zu erzwingen, wenn man damit nicht auf die speziellen Member der abgeleiteten Klasse zugreifen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937920</guid><dc:creator><![CDATA[Spezi L]]></dc:creator><pubDate>Fri, 09 Dec 2005 08:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Fri, 09 Dec 2005 09:07:49 GMT]]></title><description><![CDATA[<p>@myers</p>
<p>Versuch Dir mal statische funktionen als globale funktionen vorzustellen, die auf Grund ihres Contextes nur in einer Klassendefinition versteckt sind <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 />
(eine globale Funktion, die von einer Klasse &quot;abhaengig&quot; ist / sich logisch auf eine Klasse bezieht, warum sollt man die nicht mit der Klasse definieren, auch wenn die funktion kein Object der Klasse brauch ? Genau das ist der sinn einer statischen memberfunktion ! )</p>
<p>Nun Stell dir Frage noch mal :</p>
<blockquote>
<p>dass man mit pur virtuellen Funktionen(was ja meine Frage war) das Implementieren bei abgeleiteten Kalssen &quot;erzwingen&quot; kann.</p>
</blockquote>
<p>Die frage umformuliert:<br />
Was macht es fuer einen Sinn, globale funktionen zu erzwingen (mittels einer Klassendefinition) ?</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937928</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 09 Dec 2005 09:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Fri, 09 Dec 2005 11:33:10 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Eine virtuelle static-Funktion macht doch gar keinen Sinn.</p>
</blockquote>
<p>Das würde ich nicht unterschreiben. In C++ wurden solche Funktionen nicht berücksichtigt. Und aus technischer Sicht lässt sich gut erklären, warum sie nicht im C++ das wir kennen enthalten sind. Das heißt aber nicht, dass solche Funktionen keinen Sinn machen oder nicht implementierbar wären.<br />
In dynamischeren Sprachen, in denen Klassen selbst auch Objekte sind, werden virtuell statische Funktionen wieder ganz natürlich. Und noch ein klassisches Beispiel wo virtuell statische Funktionen in C++ schön wären: Persistenzhaltung.<br />
Hier braucht man in der Regel eine Abbildung zwischen Typ (Klasse) und Identifier (Name oder Integer-Id). Beim Speichern schreibt man object.getId(). Beim Laden braucht man Class::getId(). Gäbe es nun virtuell statische Funktionen, käme man mit einer getId-Methode aus. Diese wäre virtuell statisch und würde im Schreibfall virtuell (Aufruf über Objekt) und im Lesefall statisch aufgerufen werden. Markiert man die Methode noch als pure in der Basisklasse hat man gleich noch eine schöne Dokumentation.</p>
<p>In C++ muss man hier nun aber Duplikation + Forwarding verwenden. Sprich: zwei Methoden (getId, getClassId) wobei die nicht-statische die statische aufruft.</p>
<p>PS:<br />
Genaugenommen gibt es in Standard-C++ sogar eine Ausnahme, die sich genau wie eine virtuelle statische Funktion verhält. Nämlich operator delete. Diese Funktion ist per Definition statisch, verhält sich aber virtuell (d.h. ruft den passenden Destruktor auf (natürlich nur wenn er in der Basisklasse virtuell ist)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938028</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 09 Dec 2005 11:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to pure virtual + static on Fri, 09 Dec 2005 11:49:09 GMT]]></title><description><![CDATA[<blockquote>
<p>In dynamischeren Sprachen, in denen Klassen selbst auch Objekte sind, werden virtuell statische Funktionen wieder ganz natürlich.</p>
</blockquote>
<p>Dann ist aber ebenfalls wieder ein Objekt vorhanden <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>&lt;some more use cases&gt;</p>
</blockquote>
<p>Hast ja recht <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>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938046</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 09 Dec 2005 11:49:09 GMT</pubDate></item></channel></rss>