C++ lernen

  • Kauf dir ein Buch deiner Wahl, im Prinzip taugen sie alle's, richtig programmieren lernt man davon auch nicht.
    Wenn du die Grundlagen hast, wirst du dich halt viel in die Tiefen der verschiedenen APIs für verschiedene Zwecke einarbeiten müssen.


    Eine Refernez zu ISO C++ die brauchbar ist: http://de.cppreference.com/w/


    Allerdings empfehle ich dir erst C zu lernen, nicht weil man damit viel anfangen kann, sondern man viele C++ Programmierer findet, die C-Elemente verwenden und selbst C99 nicht so einen riesigen Sprachumfang hat.
    Damit lernt man wichtige Grundlagen der Programmierung sicher schneller, als wenn man sich durch die ganze C++-Standardbibliothek durchlernen muss. (Außerdem lernst du dann, wieso manche Dinge so sind wie sie sind.
    u.A. folgendes eben nicht funktioniert:
    class C { public: int x(int a, int b) { return a*b; } };
    //...
    C x;
    int (*fp)(int a, int b) = x.x; // <-- Fehler)
    Dafür muss man aber nunmal wissen wie a) Strukturen im Speicher abgebildet werden (was so gut wie kein C++ Buch behandelt) b) Wie Funktionen einer Klasse aufgerufen werden und im Speicher liegen c) Warum es mit Funktionen aus der VTable funktioniert.


    Imho wirst du dieses Grundverständnis mit reinem C eher erlangen, als mit reinem C++.

  • Mal so nebenbei, ich war selber überrascht, als ich in die Keywords von C schaute, der Sprachumfang ist, wie bereits von DMA genannt, ziemlich klein, wodurch die Sprache ziemlich klein scheint.

  • C und C++ unterscheiden sich hinsichtlich ihrer Programmierparadigma.
    In C programmiert man imperativ, in C++ objektiv (wobei man durchaus auch imperativ programmieren kann und auch sonst jegliches Paradigma mehr oder minder darstellen könnte).


    In C++ ist fast der ganze Sprachumfang von C enthalten, allerdings ist C++ nicht identisch mit C, auch wenn fast jeglicher Code ohne Konvertierung laufen wird.
    C++ ist mal als Erweiterung zu C programmiert worden, teilt heute aber nicht mehr viel mit C, außer die Tatsache, dass es "abwärtskompatibel" (wenn man es so nennen mag) ist.


    Der Unterschied wird sich spätestens bemerkbar machen, wenn du mit beiden Sprachen mal programmiert hast.

  • POSEID0N: Read the thread; don't post dump.
    @Thread: Das wichtigste finde ich, weil ich es oft vergessen habe, sämtliche Variablen müssen in C am Anfang eines Blocks definiert werden. Die Initialisation kann später zu einen beliebigen Punkt stattfinden.

  • Es ist nur schwierig, wenn man sich schwierig verhält. Er hat bereits Erfahrung in Java und dass sollte ihm schon bei OOP helfen (da Java objektbasiert ist).
    C++ ist auch bei kleinen Programmen nicht schwer und dann braucht man auch kein Framework dazu (.NET)