<?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[Paar Fragen zu C++]]></title><description><![CDATA[<p>Hallo,</p>
<p>hätte ein paar Fragen zu C++ da wir nun in der FH mit C++ angefangen haben zu progrmamieren.</p>
<p>1. Wieso haben manche Headerdateien die Endung .h und andere nicht?</p>
<p>2. Im Namespaces std ist die Funktion cout sichtbar. Jedoch kann ich diese erst dann verwenden wenn ich die iostream inkludiert habe. Ist irgendwie paradox. Wieso ist dies so?</p>
<p>3. Habe eine eigene Klasse Object von der ich viele andere Klassen abgeleitet habe. Ich möchte die Methode equals (wie in C#, <a href="http://VB.Net" rel="nofollow">VB.Net</a> oder Java) wie kann ich diese programmieren? Operatorüberladung?</p>
<p>4. Hab ihr mir einen Link zum Thema Konvertierung von z. B. Int nach String oder umgekehrt. Ist in C++ anscheindend nicht ganz so einfach, zumindest hab ich nix gefunden.</p>
<p>5. Und noch ne Kleinigkeit. Ich errinere mich mich - vor ein paar Jahren in der Schule mal getch() oder gets() oder sowas benutzt zu haben - ein ähnlicher Befehl wie pause unter DOS. Aber irgendwie finde ich nicht die richtige inklude-Datei.</p>
<p>Danke im Voraus für die (hoffentlich) vielen Antworten!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/143493/paar-fragen-zu-c</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 05:54:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143493.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Apr 2006 07:49:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Paar Fragen zu C++ on Sun, 09 Apr 2006 07:49:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hätte ein paar Fragen zu C++ da wir nun in der FH mit C++ angefangen haben zu progrmamieren.</p>
<p>1. Wieso haben manche Headerdateien die Endung .h und andere nicht?</p>
<p>2. Im Namespaces std ist die Funktion cout sichtbar. Jedoch kann ich diese erst dann verwenden wenn ich die iostream inkludiert habe. Ist irgendwie paradox. Wieso ist dies so?</p>
<p>3. Habe eine eigene Klasse Object von der ich viele andere Klassen abgeleitet habe. Ich möchte die Methode equals (wie in C#, <a href="http://VB.Net" rel="nofollow">VB.Net</a> oder Java) wie kann ich diese programmieren? Operatorüberladung?</p>
<p>4. Hab ihr mir einen Link zum Thema Konvertierung von z. B. Int nach String oder umgekehrt. Ist in C++ anscheindend nicht ganz so einfach, zumindest hab ich nix gefunden.</p>
<p>5. Und noch ne Kleinigkeit. Ich errinere mich mich - vor ein paar Jahren in der Schule mal getch() oder gets() oder sowas benutzt zu haben - ein ähnlicher Befehl wie pause unter DOS. Aber irgendwie finde ich nicht die richtige inklude-Datei.</p>
<p>Danke im Voraus für die (hoffentlich) vielen Antworten!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033579</guid><dc:creator><![CDATA[MarcoGomez]]></dc:creator><pubDate>Sun, 09 Apr 2006 07:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Paar Fragen zu C++ on Sun, 09 Apr 2006 08:43:10 GMT]]></title><description><![CDATA[<p>1. Alle Headers die im ISO-Standard definiert sind, haben kein .h. Wenn Header .h/.hpp/.hxx haben, dann sind es welche von jemand anderem. Die .h-Endung hatte man damals weg gelassen, damit es mit MS-DOS-Dateinamen keine Probleme gibt, da MS-DOS damals nur max. 8+3 Zeichen für Dateinamen vertragen hat. Ohne .h Endung konnte eine Header Datei sinnvoller benannt werden, z.B. anstatt exceptio.h heißt die Header exception. Ist also damals einfach eine technische Limitierung gewesen. Heute wäre es natürlich egal.</p>
<p>2. Nein, ist nicht Paradox. Der Namespace ist erst bekannt, wenn du den Header inkludierst. Der Compiler selbst kennt kein std-Namespace, das steht nämlich erst in den Headerdateien drin. Du kannst ja auch eigene Namespace definieren, wäre unflexibel wenn das im Compiler hart codiert drin wäre. <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>3. Ja, du kannst den == Operator überladen. Kommt darauf an was du vergleichen willst? Wenn du nur wissen willst, ob es das gleiche physikalische Objekt ist, reicht ein Pointer-Vergleich und du kannst dir das Operator-Überladen ersparen.</p>
<pre><code class="language-cpp">// wenn es Pointer sind:
if( pointer1 == pointer2) {
}
// wenn es Referenzen sind:
if( &amp;obj1 == &amp;obj2) {
}
</code></pre>
<p>Wenn du Eigenschaften von Objekten als Vergleich haben willst, mußt du den == Operator deiner Klasse überschreiben und kannst dann machen was du willst.</p>
<p>4. Ist einfacher als man denkt. Steht auch in unserer FAQ drin. Man benutzt dafür den stringstream aus der Standard-Lib.<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html</a></p>
<p>Eine andere (und noch schönere Möglichkeit) ist das lexical_cast aus der Boost C++ Library. Würde ich eher empfehlen.<br />
<a href="http://www.boost.org/libs/conversion/lexical_cast.htm" rel="nofollow">http://www.boost.org/libs/conversion/lexical_cast.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033592</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 09 Apr 2006 08:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to Paar Fragen zu C++ on Sun, 09 Apr 2006 08:48:14 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>3. Ja, du kannst den == Operator überladen. Kommt darauf an was du vergleichen willst? Wenn du nur wissen willst, ob es das gleiche physikalische Objekt ist, reicht ein Pointer-Vergleich und du kannst dir das Operator-Überladen ersparen.</p>
</blockquote>
<p>Danke! Also sowas in der Art: &amp;this == &amp;obj ??? Kann das leider erst morgen testen.</p>
<p>Aber eigentlich wollte ich mit der Methode prüfen ob ein Objekt von der selben Klasse ist. z B.</p>
<p>EineKlasse klasse;<br />
...andereKlasse; // könnte ein Pointer auf ein Objekt sein</p>
<p>klasse.equals(andereKlasse); // Wenn beide Klassen die selbe Basisklasse haben, return true</p>
<p>Sowas in der Art wollte ich. Das baue ich dann in die oberste Klasse ein, damit man es auf alle abgeleiteten Klassen anwenden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033600</guid><dc:creator><![CDATA[MarcoGomez]]></dc:creator><pubDate>Sun, 09 Apr 2006 08:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Paar Fragen zu C++ on Sun, 09 Apr 2006 09:14:41 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>siehe typeid und dynamic_cast.</p>
<p>Allerdings ist es in C++ kein gutes Klassenkonzept, wenn zur Laufzeit die Klasse eines Objektes bestimmt werden muß. Normalerweise sollten die polymorphie Funktionen der Basisklasse ausreichend, um die abgeleiteten Klassen zu benutzen ohne den genauen Typ der abgeleiteten Klasse wissen zu müßen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033609</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 09 Apr 2006 09:14:41 GMT</pubDate></item><item><title><![CDATA[Reply to Paar Fragen zu C++ on Sun, 09 Apr 2006 09:38:07 GMT]]></title><description><![CDATA[<p>MarcoGomez schrieb:</p>
<blockquote>
<p>Aber eigentlich wollte ich mit der Methode prüfen ob ein Objekt von der selben Klasse ist. z B.</p>
<p>EineKlasse klasse;<br />
...andereKlasse; // könnte ein Pointer auf ein Objekt sein</p>
<p>klasse.equals(andereKlasse); // Wenn beide Klassen die selbe Basisklasse haben, return true</p>
<p>Sowas in der Art wollte ich. Das baue ich dann in die oberste Klasse ein, damit man es auf alle abgeleiteten Klassen anwenden kann.</p>
</blockquote>
<p>Äh, nein. Das was du machen willst würde in Java eher dem instanceof entsprechen. Falsche Frage -&gt; Falsche Antwort. <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>Also, in C++ muß man etwas umdenken. C++ ist da etwas restriktiver was Klassen-Design angeht. Da gilt die Regel, das es zur Laufzeit nach Möglichkeit keine Klassen-Typ-Abfragen geben sollte.</p>
<p>Wenn du trotzdem einen Typ vergleichen willst, solltest du dir dynamic_cast&lt;&gt; anschauen, welches dafür gedacht ist. Ein erfolgloser Cast wirft eine Exception (bei Referenzen) oder gibt einen NULL-Pointer zurück (bei Pointern).</p>
<p>Dannn brauchst du an deinen Klassen keine Operatoren überladen.</p>
<p>typeid würde auch gehen, hat aber den Nachteil, das der Stringwert nicht standardisiert ist, kann also von Compiler zu Compiler unterschiedlich sein. Also davon eher die Finger lassen und nur in Ausnahmefällen, wenn dynamic_cast&lt;&gt; nicht ausreicht, verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033619</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 09 Apr 2006 09:38:07 GMT</pubDate></item><item><title><![CDATA[Reply to Paar Fragen zu C++ on Sun, 09 Apr 2006 10:25:17 GMT]]></title><description><![CDATA[<p>Danke für die ausführliche Antwort. Ich lass das mit dem Klassenvergleichen erst mal und arbeite mich so noch etwas in C++ ein!</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033659</guid><dc:creator><![CDATA[MarcoGomez]]></dc:creator><pubDate>Sun, 09 Apr 2006 10:25:17 GMT</pubDate></item><item><title><![CDATA[Reply to Paar Fragen zu C++ on Sun, 09 Apr 2006 12:22:37 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Die .h-Endung hatte man damals weg gelassen, damit es mit MS-DOS-Dateinamen keine Probleme gibt, da MS-DOS damals nur max. 8+3 Zeichen für Dateinamen vertragen hat. Ohne .h Endung konnte eine Header Datei sinnvoller benannt werden, z.B. anstatt exceptio.h heißt die Header exception. Ist also damals einfach eine technische Limitierung gewesen.</p>
</blockquote>
<p>Klingt für mich nicht plausibel. Woher hast du die Information?<br />
Der DOS Dateiname (also ohne Dateinamenerweiterung) kann sowieso nur 8 Zeichen umfassen. Da macht es keinen Unterschied, ob mit oder ohne .h. Und &lt;exception&gt; ist auch nicht gleich &lt;exceptio.n&gt;. Oder habe ich dich irgendwie falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033725</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 09 Apr 2006 12:22:37 GMT</pubDate></item></channel></rss>