was ist modernes C++ !??



  • kurz und knapp:
    welche 10 Dinge sind die wichtigsten die man kennen/beachten/benutzen sollte in modernem C++ stand C++20

    Background
    Die frage klingt stumpf ... und ich bin mir unsicher ob sie hier richtig ist ...

    Ich komme aus der UNI und wir haben C++ gelernt wie man C lernen würde nur mit dem Konzept der Klassen, Vererbung und Templates ... also richtig basic. C++ hat sich ja aber in den letzten 30 Jahren weiter entwickelt und ich würde gerne ein paar Schlagworte haben, um dann im Internet zu suchen und schnell etwas moderneren Code zu schreiben. Vielleicht Irre ich mich auch und man Programmiert noch auf dem stand der Nullerjahre (Also nichts dagegen, aber wenn man sich die Welt einfacher machen kann durch neue Funktionen, warum nicht)...

    Danke schon ein mal für eure Antworten
    EvD



  • Also wenn du wirklich noch auf dem Stand von C++98 (bzw. C++03) bist, dann solltest du zuerst mit C++11 anfangen, alle weiteren Versionen (C++14, 17, 20 und demnächst 23) basieren darauf, s.a. Weiterentwicklung der Programmiersprache C++ nach 2005.
    In der englischen Wiki findest du eine detailliertere Übersicht über die Neuerungen: C++11 (dort sind dann auch rechts Links zu den weiteren Versionen).


  • Mod

    Ich würde fast sagen, dass die wichtigste Entwicklung im modernen C++ nicht technischer Natur ist, sondern dass man immer seltener Code in der Wildbahn sieht, der wie C mit Klassen aussieht. Früher hatten viele Leute Angst vor ganz normalen Sachen wie komplizierten Templates, geschachtelten STL-Konstrukten, etc., oft aus irrationalen Gründen, und oft auch in Codingguidelines festgelegt. Damit konnte man auch 1998 schon programmieren, aber das haben nur die gemacht, die uns später gelehrt haben, wie es richtig geht. Heute hat jeder angehende C++-Programmierer Meyers, Alexandrescu & Co. als Anfängerlektüre gelesen. Und wenn du wissen willst, wie modernes C++ aussieht: So wie es in deren Büchern steht.



  • @SeppJ Naja, zum Beispiel die Existenz von Smart und Unique pointern ist beispielsweise schon eine Sache die wir nicht gelernt hatten. Da wurde ich schon verdutzt angestarrt als ich sagte das ich die nicht kenne. Komme auch gut ohne zurecht, frage mich nur was ich sonst noch alles verpasst habe.

    @Th69 ich habe gehofft das ich durch eine top10 zuerst die wichtigsten Neuerungen lernen kann um mich dadurch oder erst danach in die Tiefen zu stürzen ... aber du meinst ich muss mich durch die ganzen Versionen und Features klicken und lesen?



  • Es ist ja eine persönliche Sache bzw. anwendungsabhängig, welche Features man verwenden möchte.
    Daher sollte man m.E. schon über alle Features mal draufgeschaut haben, um zu wissen, welche neuen Möglichkeiten es gibt.
    Kommt ja auch darauf an, ob du ein neues Projekt erstellst oder ob du ältere Projekte umschreiben möchtest.

    Einige kleinere Sachen solltest du dir schnell angewöhnt haben, wie nullptr oder >> bei verschachtelten Templates sowie auch typsichere Enums (enum class).
    Intensiver beschäftigen solltest du dich m.E. aber mit Move-Semantik (&&), Lambda-Ausdrücken (falls du es nicht schon von anderen Sprachen kennst), Smart-Pointern sowie "uniform initialization".

    Und dann gibt es auch noch neue bzw. verbesserte Klassen der C++ Standard-Library, wie z.B. std::tuple<...>, Zufallsberechnungen (..._engine/...distribution) sowie Hash-Klassen (std::unordered_(multi)set/map).

    Und da ich sicherlich einige wichtige Sachen vergessen habe, lies einfach selber nach und beurteile, ob du sie gebrauchen kannst.


Anmelden zum Antworten