<?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[Unklarheit mit Schluesselwoertern in C++]]></title><description><![CDATA[<p>Hallo,<br />
ich bin neulich ueber folgende Schluesselwoerter bzw Kombinationen gestossen und wuerde gerne wissen was sie bedeuten. Die Frage mag etwas dumm klingen, aber bisher hab ich diese Begriffe in C++ noch nie benutzt bzw so gesehen. Das ganze ist aus einem Project welches per MS ViStu 6.0 kompiliert wird, welches fuer mich ebenfalls etwas neu ist.</p>
<p>1. das Schluesselwort &quot;interface&quot;</p>
<pre><code class="language-cpp">interface Something
{
   CONST_VTBL struct SomethingVtbl __RPC_FAR *lpVtbl;
};
</code></pre>
<p>Was ist das? Was bewirkt das &quot;interface&quot;? (Der Rest ist wohl Win abhaengig und interessiert mom noch nicht, weshalb ich es unter C++ gepostet habe).</p>
<p>2. Vererbung mit &quot;public virtual&quot;</p>
<pre><code class="language-cpp">class Servant : public virtual ServantBase
{
// ...
</code></pre>
<p>Warum &quot;virtual&quot; hier bei der Vererbung?</p>
<p>Ach ja und 3. einen &quot;inline&quot; declarierten Konstruktor der dann leer ist - macht das ueberhaupt Sinn? Wann sollte ich einen Konstruktor &quot;inline&quot; deklarieren? Wenn die Klasse &quot;klein&quot; ist? LOL</p>
<p>PS: freue mich auch ueber Links zu den direkten Definitionen. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231078/unklarheit-mit-schluesselwoertern-in-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 21:48:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231078.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Jan 2009 13:44:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Tue, 06 Jan 2009 13:44:39 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich bin neulich ueber folgende Schluesselwoerter bzw Kombinationen gestossen und wuerde gerne wissen was sie bedeuten. Die Frage mag etwas dumm klingen, aber bisher hab ich diese Begriffe in C++ noch nie benutzt bzw so gesehen. Das ganze ist aus einem Project welches per MS ViStu 6.0 kompiliert wird, welches fuer mich ebenfalls etwas neu ist.</p>
<p>1. das Schluesselwort &quot;interface&quot;</p>
<pre><code class="language-cpp">interface Something
{
   CONST_VTBL struct SomethingVtbl __RPC_FAR *lpVtbl;
};
</code></pre>
<p>Was ist das? Was bewirkt das &quot;interface&quot;? (Der Rest ist wohl Win abhaengig und interessiert mom noch nicht, weshalb ich es unter C++ gepostet habe).</p>
<p>2. Vererbung mit &quot;public virtual&quot;</p>
<pre><code class="language-cpp">class Servant : public virtual ServantBase
{
// ...
</code></pre>
<p>Warum &quot;virtual&quot; hier bei der Vererbung?</p>
<p>Ach ja und 3. einen &quot;inline&quot; declarierten Konstruktor der dann leer ist - macht das ueberhaupt Sinn? Wann sollte ich einen Konstruktor &quot;inline&quot; deklarieren? Wenn die Klasse &quot;klein&quot; ist? LOL</p>
<p>PS: freue mich auch ueber Links zu den direkten Definitionen. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640391</guid><dc:creator><![CDATA[Fabeltier]]></dc:creator><pubDate>Tue, 06 Jan 2009 13:44:39 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Tue, 06 Jan 2009 14:14:45 GMT]]></title><description><![CDATA[<p>zu 1): ein google nach &quot;interface keyword c++&quot; liefert dir schnell den Hinweis, dass es sich um c++ .NET handelt, also eine MSVC Eigenheit. das Schlüsselwort interface gibt es in Standard-C++ nicht.</p>
<p>zu 2): ein google nach &quot;virtuelle Vererbung&quot; hilft hier weiter, da gibts dann Informationen und Diskussionen wann, wie und warum man virtuerlle Vererbung einsetzt.</p>
<p>zu 3): inline ist ein <em>Hinweis</em> an den Compiler, dass er den Codse der Funktion direkt an die aufrufende Stelle schreiben könnte, statt wie üblich einen Sprung zur aufgerufenen Funktion einzufügen. Inlining ist gerade bei sehr kleinen Funktionen (z.B. deinem leeren Konstruktor) nützlich, wenn der Sprung zur Funktion mehr kosten würde als die direkte Ausführung des Codes. Allerdings ists dem Compiler vorbehalten, das inline zu beherzigen oder auch nicht. In den meisten Fällen ist ein explizites Angeben von inline ein Fall von &quot;premature optimization&quot; (google hilft auch hier weiter).</p>
<p>zweite Anlaufstelle für Punkt 2 und 3 ist auch wikipedia...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640409</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 06 Jan 2009 14:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Tue, 06 Jan 2009 14:32:53 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>zu 1): ein google nach &quot;interface keyword c++&quot; liefert dir schnell den Hinweis, dass es sich um c++ .NET handelt, also eine MSVC Eigenheit. das Schlüsselwort interface gibt es in Standard-C++ nicht.</p>
</blockquote>
<p>Dem wiederspreche ich, aber nur aus einem Grund: MS ViStu 6.0</p>
<p>Dort war noch kein C++ .Net vorhanden. Ich gehe hier eher davon aus das entweder:<br />
a) Das Projekt doch nicht für MSVC6 gedacht ist (und du tatsächlich mit <a href="http://C++.Net" rel="nofollow">C++.Net</a> richtig liegst)<br />
oder<br />
b) interface eher zu COM oder so gehört (musste mich nur als Anwender von COM-Controls bisher damit auseinander setzen).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640422</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 06 Jan 2009 14:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Tue, 06 Jan 2009 18:12:22 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>b) interface eher zu COM oder so gehört (musste mich nur als Anwender von COM-Controls bisher damit auseinander setzen).</p>
</blockquote>
<p>Irgendwo in den Tiefen der windows.h-Welt gibt es ein<br />
#define interface struct</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640577</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 06 Jan 2009 18:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Tue, 06 Jan 2009 18:17:24 GMT]]></title><description><![CDATA[<p>Das mit <code>interface</code> hat mich kürzlich auch gerade gewundert, auch weil es ebenfalls vom Syntaxhighlighting betroffen ist. Zudem ist es in MSVC++ auch möglich, beispielsweise Folgendes zu schreiben:</p>
<pre><code class="language-cpp">class MyClass abstract
{

};
</code></pre>
<p>Und <code>MyClass</code> ist damit abstrakt. Das Merkwürdige ist, dass selbst wenn man eine Klasse auf C++-Weise abstrakt macht (durch rein virtuelle Funktionen), man beim Darüberfahren mit dem Mauszeiger ein <code>class MyClass abstract</code> sieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640582</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 06 Jan 2009 18:17:24 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Tue, 06 Jan 2009 19:04:48 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Das mit <code>interface</code> hat mich kürzlich auch gerade gewundert, auch weil es ebenfalls vom Syntaxhighlighting betroffen ist</p>
</blockquote>
<p>Unter MSVC2005/2008 ist das auch teilweise sinnvoll (wenn gleich es mir lieber wäre, wenn man die Einstellung in Abhängigkeit ob C++/CLI oder normales C++ bekommen würde). Aber unter MSVC6 kann ich mir dies nicht vorstellen (habe aber keins im Zugriff).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640609</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 06 Jan 2009 19:04:48 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Wed, 07 Jan 2009 16:27:06 GMT]]></title><description><![CDATA[<p>Danke fuer die Antworten, zu &quot;interface&quot; laesst sich echt einiges ergooglen, bin nun etwas mehr darueber informiert. Das mit der Virtuellen Vererbung faellt mir nun auch wieder ein, stimmt - da war mal was mit Diamantstrukturen in der Vererbung, auch dies laesst sich sehr gut nachlesen und einfachst nachbauen.</p>
<p>Nur, welchen Sinn es macht extra einen Konstruktor zu deklarieren damit man ihn inlinen kann bleibt mir raetselhaft. Mir ist die Funktionsweise von inline (im Ggs zur &quot;virtuellen Vererbung&quot;, anscheinend) einigermassen gut bekannt, dass es eine empfehlung ist, aber den Compiler nicht zum inlinen zwingt, etc. Aber ich dachte, dass solcherlei Optimierungen doch eigentlich von Hause aus gemacht werden, GERADE wenn der Ctor leer steht. Irgendwie scheint mir das eher als aufblaehen des Codes. Oder gibt es irgendeinen rationalen Grund zum inlinen eines leeren Ctors?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641197</guid><dc:creator><![CDATA[Fabeltier]]></dc:creator><pubDate>Wed, 07 Jan 2009 16:27:06 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Wed, 07 Jan 2009 18:00:03 GMT]]></title><description><![CDATA[<p>Fabeltier schrieb:</p>
<blockquote>
<p>Danke fuer die Antworten, zu &quot;interface&quot; laesst sich echt einiges ergooglen, bin nun etwas mehr darueber informiert. Das mit der Virtuellen Vererbung faellt mir nun auch wieder ein, stimmt - da war mal was mit Diamantstrukturen in der Vererbung, auch dies laesst sich sehr gut nachlesen und einfachst nachbauen.</p>
</blockquote>
<p>interface beim VC++ ist das selbe wie struct.<br />
Und abstract ist zB komplett unbedeutend:<br />
#define abstract</p>
<p>Es dient lediglich der besseren &quot;lesbarkeit&quot; - wobei das natuerlich streitpunkt ist.</p>
<blockquote>
<p>Nur, welchen Sinn es macht extra einen Konstruktor zu deklarieren damit man ihn inlinen kann bleibt mir raetselhaft. Mir ist die Funktionsweise von inline (im Ggs zur &quot;virtuellen Vererbung&quot;, anscheinend) einigermassen gut bekannt, dass es eine empfehlung ist, aber den Compiler nicht zum inlinen zwingt, etc. Aber ich dachte, dass solcherlei Optimierungen doch eigentlich von Hause aus gemacht werden, GERADE wenn der Ctor leer steht. Irgendwie scheint mir das eher als aufblaehen des Codes. Oder gibt es irgendeinen rationalen Grund zum inlinen eines leeren Ctors?</p>
</blockquote>
<p>das macht garkeinen Sinn was du hier geschrieben hast.<br />
kannst du versuchen das ganze nochmal neu formuliert zu posten?<br />
denn inline und virtuelle vererbung haben rein garnichts miteinander zu tun und wie bereits gesagt interface ist das selbe wie struct, bringt also bei vererbung keinen vorteil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641275</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 07 Jan 2009 18:00:03 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Wed, 07 Jan 2009 18:08:12 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13046">@Fabeltier</a>:<br />
Einen leeren ctor schreibt man am besten garnicht - wozu auch? Damit man sinnlos ein paar Zeilen Code mehr hat, und sich jeder fragt was der leere ctor soll?</p>
<p>Grund zum expliziten inlinen: einige Compiler können immer noch nicht inlinen wenn der Code nicht in der aktuellen Übersetzungseinheit sichtbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641281</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 07 Jan 2009 18:08:12 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Wed, 07 Jan 2009 18:11:52 GMT]]></title><description><![CDATA[<p>wenn du nen leeren CTor willst, aber auch einen mit Paramtern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641286</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Wed, 07 Jan 2009 18:11:52 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Wed, 07 Jan 2009 18:14:51 GMT]]></title><description><![CDATA[<p>JustAnotherNoob schrieb:</p>
<blockquote>
<p>wenn du nen leeren CTor willst, aber auch einen mit Paramtern?</p>
</blockquote>
<p>Was sollte ein leerer CTor mit Parametern bringen...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641290</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 07 Jan 2009 18:14:51 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Wed, 07 Jan 2009 18:25:21 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>JustAnotherNoob schrieb:</p>
<blockquote>
<p>wenn du nen leeren CTor willst, aber auch einen mit Paramtern?</p>
</blockquote>
<p>Was sollte ein leerer CTor mit Parametern bringen...?</p>
</blockquote>
<p>nen leeren standard-ctor und einen mit parametern meint er wohl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641304</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 07 Jan 2009 18:25:21 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Wed, 07 Jan 2009 18:27:39 GMT]]></title><description><![CDATA[<p>ja ok, an den fall hatte ich jetzt nicht gedacht -- obwohl das eigentlich garnicht SO selten vorkommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641308</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 07 Jan 2009 18:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Thu, 08 Jan 2009 16:28:53 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Und abstract ist zB komplett unbedeutend:<br />
#define abstract</p>
<p>Es dient lediglich der besseren &quot;lesbarkeit&quot; - wobei das natuerlich streitpunkt ist.</p>
</blockquote>
<p>Bei mir (MSVC++ 2008 Express) reicht <code>abstract</code> immerhin aus, um den Kompiliervorgang mit der folgenden Fehlermeldung abzubrechen:</p>
<blockquote>
<p>Eine Klasse, die als &quot;abstract&quot; deklariert wurde, kann nicht instanziiert werden.</p>
</blockquote>
<p>Abgeleitete Klassen scheinen dagegen automatisch nicht mehr abstrakt zu sein. Fragwürdige Sache...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641910</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 08 Jan 2009 16:28:53 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Thu, 08 Jan 2009 16:50:39 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Fragwürdige Sache...</p>
</blockquote>
<p>*Irgendwas von &quot;Microsoft&quot; und &quot;immer ihr eigenes Süppchen kochen&quot; in den Bart brummelt*</p>
<p>PS.: nein, bitte jetzt keinen Flamewars mit Anti-M$ Parolen und kontra-Anti-M$-Parolen anfangen <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>PPS.: nein ich hab keinen Bart. Der ist pur virtuell, quasi <code>abstract</code> <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/1641928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641928</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 08 Jan 2009 16:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Thu, 08 Jan 2009 16:55:07 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>PPS.: nein ich hab keinen Bart. Der ist pur virtuell, quasi <code>abstract</code> <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>
</blockquote>
<p>Dann dürfte es dich gar nicht geben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1641934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641934</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 08 Jan 2009 16:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to Unklarheit mit Schluesselwoertern in C++ on Thu, 08 Jan 2009 16:59:13 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>PPS.: nein ich hab keinen Bart. Der ist pur virtuell, quasi <code>abstract</code> <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>
</blockquote>
<p>Dann dürfte es dich gar nicht geben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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>
</blockquote>
<p>Achwo. Bart ist eine Basisklasse für Vollbart, Ziegenbart usw. <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 />
*SCNR*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641937</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 08 Jan 2009 16:59:13 GMT</pubDate></item></channel></rss>