Welche C Prinzipien sind für C++ nicht gültig?



  • Kennt jemand eine Übersicht (oder hat ein paar Hinweise) für
    Prinzipien bzw. Befehle, die in C++ keine Gültigkeit mehr haben oder nicht mehr anwendbar sind?

    Vielen Dank für die Hilfe.



  • Es gibt keinen impliziten Cast von void* in andere Zeigertypen mehr.



  • In diesem Beitrag auf Stackoverflow werden ein paar Beispiele genannt.


  • Mod

    Für sprachtechnische Unterschiede gibt's im C++-Standard einen vollständigen Anhang. Was die Standardbibliothek angeht, solltest du alsRichtschnur von allem aus der C-Standardbibliothek die Finger lassen, für das es in C++ direkten Ersatz gibt. Seit C++11 ist das alles außer die Header cassert, cmath, csetjmp (den sowieso nicht benutzen!), csignal (den sowieso nicht benutzen!) und cstdlib.



  • <cstring> ist uU recht nützlich.



  • @SeppJ: Warum <csignal> nicht benutzen?


  • Mod

    Ethon schrieb:

    <cstring> ist uU recht nützlich.

    Was kann cstring, was man mit string nicht kann und wo string nicht besser wäre?

    Kellerautomat schrieb:

    @SeppJ: Warum <csignal> nicht benutzen?

    Weil signal ein sehr ungünstig definiertes Verhalten hat, wenn mehrere Signale schnell hintereinander oder gar gleichzeitig kommen. Man sollte stattdessen unbedingt die Funktionen des Betriebssystems benutzen. Die Linux-Manpage zu signal rät sogar ausdrücklich von der Benutzung ab.



  • Ich hätte schwören können, sigaction wäre im Standard dabei. Ist es wohl aber nicht.



  • SeppJ schrieb:

    Ethon schrieb:

    <cstring> ist uU recht nützlich.

    Was kann cstring, was man mit string nicht kann und wo string nicht besser wäre?

    Für Strings mit einer statischen Maximalgröße ist std::string manchmal unnötig.
    Man muss ja nicht für jeden Mist dynamisch Speicher allozieren & kopieren.



  • Ethon schrieb:

    Für Strings mit einer statischen Maximalgröße ist std::string manchmal unnötig.
    Man muss ja nicht für jeden Mist dynamisch Speicher allozieren & kopieren.

    In der Tat. Dafür verwendet man eigene String Klassen. Genauso wie für ropes.

    Der Punkt aber ist: du verwendest eine Klasse und nie nie nie strcpy oder dergleichen.



  • Ethon schrieb:

    Für Strings mit einer statischen Maximalgröße ist std::string manchmal unnötig.
    Man muss ja nicht für jeden Mist dynamisch Speicher allozieren & kopieren.

    Für Strings mit einer kleinen statischen Maximalgröße (meist um die 16 Zeichen) machen die meisten std::string-Implementierungen das nicht einmal.



  • Ethon schrieb:

    SeppJ schrieb:

    Ethon schrieb:

    <cstring> ist uU recht nützlich.

    Was kann cstring, was man mit string nicht kann und wo string nicht besser wäre?

    Für Strings mit einer statischen Maximalgröße ist std::string manchmal unnötig.
    Man muss ja nicht für jeden Mist dynamisch Speicher allozieren & kopieren.

    Premature Optimisation? Ist ja nicht so tragisch, außer du hast eine extrem zeitkritische Umgebung und selbst da würde man eher gleich zu C greifen.


Anmelden zum Antworten