Konstruktoren

yuro

Erfahrenes Mitglied
Guten Tag,

und zwar hab ich mal ne Frage. Ich schreib erstmal den Programmausschnitt auf:

Code:
void print_val(Buchung, buchung_val) {
      buchung_val.info();
}

void print_ref(Buchung, buchung_ref) {
      buchung_ref.info();
}

void main() {
     Buchung mittagessen;
     Buchung getraenk(1.1, "Cola");
     mittagessen = mensa;
     print_val(mittagessen);
     print_ref(getraenk);
     Buchung* inst1 = new Buchung(1,"Foo");
     Buchung* inst2 = new Ueberweisung();
     inst1->info();
     inst2->info();
     delete(inst1);
     delete(inst2);
}

Und zwar hab ich jetzt die Frage was denn der Destruktor, Kopierkonstruktor und der Zuweisungsoperator ist****..
 
Hi

Zuerst einmal: Der Beistrich nach Buchung bei print_ref/print_val gehört weg.

Dann...ist print_val zwar in Ordnung (bekommt die Variable als Wert/Value),
aber print_ref soll dann wohl eine Referenz bekommen? Da fehlt nach Buchung ein &:
C++:
void print_val(Buchung buchung_val) {
      buchung_val.info();
}
 
void print_ref(Buchung& buchung_ref) {
      buchung_ref.info();
}

Zur Hauptfrage: Wo Konstruktor, CC, Dest. und =-Op sind, kann ich so auch nicht sagen,
da du Buchung nicht zeigst.

Oder willst du wissen, welche Zeilen im main was davon verwenden?
 
also ich kann es dir per PM schicken wenn du magst.

ich denk mal der CC ist :

Code:
void main() {
     Buchung mittagessen;
     Buchung getraenk(1.1, "Cola");
     Buchung mensa = getraenk;         //Kopierkonstruktor
     mittagessen = mensa;                  //Kopierkonstruktor
     print_val(mittagessen);
     print_ref(getraenk);
     Buchung* inst1 = new Buchung(1,"Foo");
     Buchung* inst2 = new Ueberweisung();
     inst1->info();
     inst2->info();
     delete(inst1);
     delete(inst2);
}

oder****?
 
Hallo,
ich würde dir empfehlen nocheinmal im Internet die genaue Definition nachzulesen oder falls du hast in einer Literatur.
Kopier- und Zuweisungskonstruktor ist im Allgeminen dasselbe, differenziert wird m.E. nur durch die Anwendung.

Dann ist es so das bei dem ersten Teil, wo du Kopierkonstruktor geschrieben hast, dem auch so ist.
Beim zweiten ist es aber nur eine ganz normale Zuweisung, da das Objekt dort ja schon existiert. Dort werden einfach nur die Daten 1:1 in das andere Objekt kopiert (wobei hier Vorsicht - nicht immer so).

Grüße
 
Hey,

also ein Kopierkonstruktor, ist ein Konstruktor, der als Parameter eine Referenz auf ein Objekt selbigen Typs nimmt.

Eben weil dieser im unten stehenden Code nicht aufgerufen wird, kann man ohne die Klasse gesehen zu haben, keinerlei Aussagen darüber machen.


Ein Destruktor hat in der Regel folgendes Zeichen am Anfang ~ und sieht ansonsten genau wie der Konstruktor der Klasse aus.

Zuweisungsoperator = (bitte verbessert mich, wenn ich mich irre:)


Viele Grüße
 
Zuletzt bearbeitet von einem Moderator:
aaah ok :) das ist verständlich. und jetzt hab ich ne frage zum standardkonstruktor.. normalerweise wird der doch wie bei Ueberweisung() mit den klammern geschrieben.. oder kann zb auch Buchung mittagessen; ein standardkonstruktor sein****?
 
Die Objekt-Initialisierung unterscheidet sich von der eigentlichen Objekt-Instanzierung, vielleicht solltest Du doch nochmal nachlesen ;)


Edit: In Deinem Fall hast Du lediglich Speicher allokiert und die Buchung deklariert als mittagessen
 
Zuletzt bearbeitet von einem Moderator:
Nein, der Destruktor ist in der selben Zeile wie delete.

Was ist an Buchung so geheim, dass du es nur über PN zeigen willst?
So könnte man dir gezielter helfen (da es CC etc. ja gar nicht geben muss).
 
Zurück