Über den Vektoren Teil kann ich nichts sagen, habe ich mir nie richtig angeschaut. Ich
würde vielleicht den Polymorphismus noch hinzufügen, speziell das überladen von Funktionen und vielleicht die Funktionen „virtual“ sowie die Erklärung von
„private“ und „public“.
Ich wollte nicht so speziell darauf eingehen, weil dann viele einfach nur noch Bahnhof verstanden hätten. virtual ist z.B. mit dem Überschreiben von Funktionen
gemeint. Über die Implementierungsdetails wollte ich nicht erzählen, sondern nur allgemein, damit ein Grundverständnis zu den Begriffen da ist.
1.
Falsch. Der Konstruktur wird zuerst aufgerufen und dann wird die Methode die mit dem =operator verknüpft ist aufgerufen. Diese speichert erst den Inhalt in sichab.
Nein, beim Erstellen und gleichzeitigen Zuweisen wird der Konstruktor mit einem passenden Parameter rausgesucht und verwendet. Es kann sein, dass das als
string text = string(text) compiled wird und erst ein Objekt erzeugt und das dann kopiert wird, sodass man zwei Konstruktoraufrufe auf unterschiedliche Objekte
hat (1 parameter + copy).
Der Zuweisungsoperator wird aber nur angewandt, wenn das Objekt bereits besteht und dann zugewiesen wird, wobei manche Implementierungen im
Konstruktor einfach den Zuweisungsoperator aufrufen, weil man sich so doppelten Code spart.
2.
und zwar "sich selber". Die Methode initialisiert alles nötige, damit das Objekt, in dem es ist, funktioniert.
Daher ist das Beispiel auch kein Konstruktor, da es erst ein Object (eine Struct) erzeugt und dann von außen Daten drin speichert.
Klar, aber so ist ungefähr verständlich, was ein Konstruktor überhaupt macht, denn fast immer läuft Speicherplatzreservierung und Konstruktoraufruf zusammen ab.