Standardkonstruktor Kollision
-
Etwas was im Lehrbuch nicht so steht... Wenn ich in einer Klasse so definiere:
Object(Object* parent = 0, int x = 0, int y = 0): varParent(parent) , varX(x), varY(y) {} Object() : varParent(0), varX(0), varY(0) {}gibt es dann linker-Fehler, weil der Compiler nicht weiss welches der beiden Konstruktoren aufgerufen werden soll wenn ich nur Object(); schreibe
Wenn ich die = 0 wegmache, wird es gehen.Meine Frage: gibt es überhaupt einen Unterschied zwischen den beiden? Oder kann ich einfach den Standardkonstrutkor Object() {} weglassen? Mein erster Gedanke ist dass das Obere dynamischer ist.
-
gibt es dann linker-Fehler, weil der Compiler nicht weiss welches der beiden Konstruktoren aufgerufen werden soll wenn ich nur Object(); schreibe
Compiler-Fehler.
Meine Frage: gibt es überhaupt einen Unterschied zwischen den beiden? Oder kann ich einfach den Standardkonstrutkor Object() {} weglassen? Mein erster Gedanke ist dass das Obere dynamischer ist.
Du kannst den unteren weglassen.
-
Es ergibt ja auch überhaupt keinen Sinn, zwei Default-Konstruktoren zu deklarieren.