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.


Anmelden zum Antworten