<?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[C++ und Typesicherheit]]></title><description><![CDATA[<p>Guten Tag.</p>
<p>Man sagt ja immer c++ sei typesicher. was genau heißt das nun. das i/o-system von c++ solle typesicherer als von c (printf etc.) sein.</p>
<p>Kann vielleicht einer erklären was es mit dem begriff typesicherheit auf sich hat und vielleicht auch beispiele geben wo das typesicher in c++ ist und in c nicht.</p>
<p>danke schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186050/c-und-typesicherheit</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 20:16:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186050.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jul 2007 12:48:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 12:48:44 GMT]]></title><description><![CDATA[<p>Guten Tag.</p>
<p>Man sagt ja immer c++ sei typesicher. was genau heißt das nun. das i/o-system von c++ solle typesicherer als von c (printf etc.) sein.</p>
<p>Kann vielleicht einer erklären was es mit dem begriff typesicherheit auf sich hat und vielleicht auch beispiele geben wo das typesicher in c++ ist und in c nicht.</p>
<p>danke schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318216</guid><dc:creator><![CDATA[neuman]]></dc:creator><pubDate>Wed, 04 Jul 2007 12:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 12:53:50 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Type_safety" rel="nofollow">http://en.wikipedia.org/wiki/Type_safety</a><br />
<a href="http://foldoc.org/index.cgi?strong+typing" rel="nofollow">http://foldoc.org/index.cgi?strong+typing</a></p>
<p>Ein wichtiger Unterschied zwischen C und C++ Typ-System verdeutlicht folgender Code</p>
<pre><code class="language-cpp">struct A {
  int a;
};

struct B {
  double b;
};

int main() {
  struct A a;
  void *ptr = &amp;a;
  struct B *b = ptr;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1318219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318219</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Wed, 04 Jul 2007 12:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 14:44:18 GMT]]></title><description><![CDATA[<p>rüdiger schrieb:</p>
<blockquote>
<p><a href="http://en.wikipedia.org/wiki/Type_safety" rel="nofollow">http://en.wikipedia.org/wiki/Type_safety</a><br />
<a href="http://foldoc.org/index.cgi?strong+typing" rel="nofollow">http://foldoc.org/index.cgi?strong+typing</a></p>
<p>Ein wichtiger Unterschied zwischen C und C++ Typ-System verdeutlicht folgender Code</p>
<pre><code class="language-cpp">struct A {
  int a;
};

struct B {
  double b;
};

int main() {
  struct A a;
  void *ptr = &amp;a;
  struct B *b = ptr;
}
</code></pre>
</blockquote>
<p>Vielen Dank. Die Links schaue ich mir gleich mal an.<br />
Die letzte anweisung würde in c++ nur mit einem static_cast funktionieren oder?<br />
Und ist das in c deswegen schlimm, weil ptr gar nicht auf einen struct A zeigen könnte und um in c++ die typesicherheit zu erzwingen deswegen ein static_cast hin muss? Und static_cast würde in c++ meckern wenn ptr nicht auf ein A zeigen sollte oder?</p>
<p><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/1318320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318320</guid><dc:creator><![CDATA[neuman]]></dc:creator><pubDate>Wed, 04 Jul 2007 14:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 14:45:18 GMT]]></title><description><![CDATA[<p>Hast du auch ein beispiel für cout und printf, wo deutlich wird das cout sicherer/typesicherer ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318322</guid><dc:creator><![CDATA[neuman]]></dc:creator><pubDate>Wed, 04 Jul 2007 14:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 14:52:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main() {
  double n = 10.0;
  printf(&quot;%s&quot;, n);
  // vs.
  cout &lt;&lt; n;
}
</code></pre>
<blockquote>
<p>Und static_cast würde in c++ meckern wenn ptr nicht auf ein A zeigen sollte oder?</p>
</blockquote>
<p>Nee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318328</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Wed, 04 Jul 2007 14:52:36 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 14:57:55 GMT]]></title><description><![CDATA[<p>Nö, das hat nichts mit dem Typsystem zu tun. printf funktioniert in C++ genau so typenunsicher wie in C, aber die Wirkungsmechanismen sind andere. cout wählt automatisch den korrekten Typ auf Basis der Templates, printf automatisch den gewünschten Typ auf Basis des Format-Strings. Der gesamte Template-Unterbau existiert in C aber überhaupt nicht, von daher ist der Vergleich hier etwas ... unpassend.</p>
<p>rüdiger schrieb:</p>
<blockquote>
<p>Ein wichtiger Unterschied zwischen C und C++ Typ-System verdeutlicht folgender Code</p>
</blockquote>
<p>Ein wichtiger? Hast Du denn noch einen anderen? (Die automatische Wandlung von void-Zeigern ist übrigens ein in C absichtlich eingeführtes Loch im Typsystem.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318332</guid><dc:creator><![CDATA[Daniel E.]]></dc:creator><pubDate>Wed, 04 Jul 2007 14:57:55 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 15:03:12 GMT]]></title><description><![CDATA[<p>Daniel E. schrieb:</p>
<blockquote>
<p>Nö, das hat nichts mit dem Typsystem zu tun. printf funktioniert in C++ genau so typenunsicher wie in C, aber die Wirkungsmechanismen sind andere. cout wählt automatisch den korrekten Typ auf Basis der Templates, printf automatisch den gewünschten Typ auf Basis des Format-Strings. Der gesamte Template-Unterbau existiert in C aber überhaupt nicht, von daher ist der Vergleich hier etwas ... unpassend.</p>
</blockquote>
<p>Es wurde explizit nach einem Vergleich zwischen printf und cout gefragt.</p>
<p>Daniel E. schrieb:</p>
<blockquote>
<p>rüdiger schrieb:</p>
<blockquote>
<p>Ein wichtiger Unterschied zwischen C und C++ Typ-System verdeutlicht folgender Code</p>
</blockquote>
<p>Ein wichtiger? Hast Du denn noch einen anderen? (Die automatische Wandlung von void-Zeigern ist übrigens ein in C absichtlich eingeführtes Loch im Typsystem.)</p>
</blockquote>
<p>Ja, der andere wichtige war das Casten zwischen verwandten Klassen. Gibts in C nämlich gar nicht. <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/1318337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318337</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 15:17:30 GMT]]></title><description><![CDATA[<p>rüdiger schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int main() {
  double n = 10.0;
  printf(&quot;%s&quot;, n);
  // vs.
  cout &lt;&lt; n;
}
</code></pre>
<blockquote>
<p>Und static_cast würde in c++ meckern wenn ptr nicht auf ein A zeigen sollte oder?</p>
</blockquote>
<p>Nee.</p>
</blockquote>
<p>Sorry meinte: Und static_cast würde in c++ meckern wenn ptr nicht auf ein B zeigen sollte oder?</p>
<p>Und das in printf mit %s funktioniert für ein double oder wie ?</p>
<p>Und gibt es noch andere wichtige codeteile wo man die typesicherheit von c++ gegenüber c sieht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318346</guid><dc:creator><![CDATA[neuman]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 15:28:23 GMT]]></title><description><![CDATA[<p>In dem Teil des Typsystems, der in C und C++ existiert (also Wandlung von Zeigern, structs und Elementartypen wie Integern oder doubles) gibt es genau einen Unterschied in der 'Strenge' der Typisierung, wenn man so will und das ist die unterschiedliche Behandlung des void-Zeigers.</p>
<p>Das I/O-System ist ein ganz anderer Punkt, fputs als Vertreter für C funktioniert auch einwandfrei und 'typsicher'. printf funktioniert in C++ auch falsch. Das hat nichts mit der Strenge der Typisierung, sondern mit dem darunterliegenden Mechanismus zu tun. C kennt einfach keine Templates oder abgeleiteten Klassen, so etwas kann man also auch nicht bezüglich der Typenkorrektheit vergleich, weil C die Typen schon gar nicht kennt. Darum ist die Aussage, C++ sei typensicherer als C genaugenommen ziemlicher Unfug. Man hat in C++ nur andere Sprachmittel zur Verfügung, damit man mit Zeigerarithmetik oder Formatstrings nicht mehr rumwursteln muß, was evtl. Fehler vermeidet. Das macht C++ aber nicht zu einer streng typisierten Sprache -- das ist es nämlich einfach nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318350</guid><dc:creator><![CDATA[Daniel E.]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 15:37:12 GMT]]></title><description><![CDATA[<p>neuman schrieb:</p>
<blockquote>
<p>Und das in printf mit %s funktioniert für ein double oder wie ?</p>
</blockquote>
<p>Eben nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318356</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:37:12 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 15:44:00 GMT]]></title><description><![CDATA[<p>Daniel E. schrieb:</p>
<blockquote>
<p>In dem Teil des Typsystems, der in C und C++ existiert (also Wandlung von Zeigern, structs und Elementartypen wie Integern oder doubles) gibt es genau einen Unterschied in der 'Strenge' der Typisierung, wenn man so will und das ist die unterschiedliche Behandlung des void-Zeigers.</p>
<p>Das I/O-System ist ein ganz anderer Punkt, fputs als Vertreter für C funktioniert auch einwandfrei und 'typsicher'. printf funktioniert in C++ auch falsch. Das hat nichts mit der Strenge der Typisierung, sondern mit dem darunterliegenden Mechanismus zu tun. C kennt einfach keine Templates oder abgeleiteten Klassen, so etwas kann man also auch nicht bezüglich der Typenkorrektheit vergleich, weil C die Typen schon gar nicht kennt. Darum ist die Aussage, C++ sei typensicherer als C genaugenommen ziemlicher Unfug. Man hat in C++ nur andere Sprachmittel zur Verfügung, damit man mit Zeigerarithmetik oder Formatstrings nicht mehr rumwursteln muß, was evtl. Fehler vermeidet. Das macht C++ aber nicht zu einer streng typisierten Sprache -- das ist es nämlich einfach nicht.</p>
</blockquote>
<p>Danke für die ausführliche Antwort.</p>
<p>Mr. N schrieb:</p>
<blockquote>
<p>neuman schrieb:</p>
<blockquote>
<p>Und das in printf mit %s funktioniert für ein double oder wie ?</p>
</blockquote>
<p>Eben nicht.</p>
</blockquote>
<p>Und was ist dann an dem beispiel von rüdiger so besonders.</p>
<p>Mein Frage lautete ja:</p>
<p>neuman schrieb:</p>
<blockquote>
<p>Hast du auch ein beispiel für cout und printf, wo deutlich wird das cout sicherer/typesicherer ist?</p>
</blockquote>
<p>Und dann kam dieser Code:</p>
<pre><code class="language-cpp">int main() {
  double n = 10.0;
  printf(&quot;%s&quot;, n);
  // vs.
  cout &lt;&lt; n;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1318358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318358</guid><dc:creator><![CDATA[neuman]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 15:45:11 GMT]]></title><description><![CDATA[<p>Achso oder meinst du man könne %s für ein double nehmen und es kompiliert trotzdem was aber nicht sicher ist???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318359</guid><dc:creator><![CDATA[neuman]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:45:11 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 15:49:42 GMT]]></title><description><![CDATA[<p>neuman schrieb:</p>
<blockquote>
<p>Achso oder meinst du man könne %s für ein double nehmen und es kompiliert trotzdem was aber nicht sicher ist???</p>
</blockquote>
<p>Richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318364</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:49:42 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 15:57:58 GMT]]></title><description><![CDATA[<p>OK <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 />
Wenn mich jetzt irgendwann einer mal fragen sollte:&quot;C++ ist eine typesicher sprache. kannst du mir sagen was das genau bedeutet?&quot;</p>
<p>Wie könnt ich darauf am schönsten antworten ihn zwei kurzen sätzen oder ist das von Daniel E. schon die perfekte und kürzeste antwort drauf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318371</guid><dc:creator><![CDATA[neuman]]></dc:creator><pubDate>Wed, 04 Jul 2007 15:57:58 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 16:30:08 GMT]]></title><description><![CDATA[<p>neuman schrieb:</p>
<blockquote>
<p>OK <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 />
Wenn mich jetzt irgendwann einer mal fragen sollte:&quot;C++ ist eine typesicher sprache. kannst du mir sagen was das genau bedeutet?&quot;</p>
<p>Wie könnt ich darauf am schönsten antworten ihn zwei kurzen sätzen oder ist das von Daniel E. schon die perfekte und kürzeste antwort drauf?</p>
</blockquote>
<p>Wie wärs damit:</p>
<p>&quot;C++ ist keine notwendigerweise typsichere Sprache, man kann es aber typsicher benutzen. Man kann also dafür sorgen, dass man Datenobjekte immer nur als solche mit kompatiblem Typen behandelt.&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318389</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Wed, 04 Jul 2007 16:30:08 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 16:31:04 GMT]]></title><description><![CDATA[<p>neuman schrieb:</p>
<blockquote>
<p>OK <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 />
Wie könnt ich darauf am schönsten antworten ihn zwei kurzen sätzen oder ist das von Daniel E. schon die perfekte und kürzeste antwort drauf?</p>
</blockquote>
<p>solange du das typsystem nicht absichtlich aushebelst wird der compiler verhindern, dass du irgendeine schweinerei begehst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318391</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 04 Jul 2007 16:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to C++ und Typesicherheit on Wed, 04 Jul 2007 16:35:08 GMT]]></title><description><![CDATA[<p>Aja, danke für die zwei letzten antworten.<br />
Tolles Forum danke an alle. <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/1318395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318395</guid><dc:creator><![CDATA[neuman]]></dc:creator><pubDate>Wed, 04 Jul 2007 16:35:08 GMT</pubDate></item></channel></rss>