Warum ist explicit bei Konstruktoren nicht Standard?



  • Wäre es nicht besser wenn jeder Konstruktor standardmässig 'explicit' wäre und es stattdessen ein Schlüsselwort 'implicit' geben würde?



  • Hast du schon mal Bjarne gefragt? 🙂
    Imo kann man das nicht so einfach beantworten, weil die built-in Typen dagegen sprechen. Da hätte man Grundlegendes anders spezifizieren müssen. Und dagegen spricht dann wiederum die Abwärts- (C-) Kompatibilität.





  • groovemaster schrieb:

    Imo kann man das nicht so einfach beantworten, weil die built-in Typen dagegen sprechen.

    Wie das??
    Es war wohl einfach mal trendy, möglichst viele Fehlerquellen durch automagische Features einzuführen. Fast alles, was in C/C++ implizit geht, wäre IMHO explizit besser, aber ändern wird sich das alles nie.



  • operator void schrieb:

    Wie das??

    Bsp

    char x = 10;
    

    Wenn alles explicit wäre, müsstest du folgendes machen

    char x(10);
    

    Das würde die Abwärts- (C-) Kompatibilität brechen, und war vermutlich ein Grund, warum man nicht alles von Haus aus explicit gemacht hat.

    operator void schrieb:

    aber ändern wird sich das alles nie

    Imo auch gut so. Wer explicit will, kann explicit schreiben. Ansonsten sollte eine Programmiersprache so intuitiv wie möglich sein, und wenn explicit default wäre, würde das dem erheblich entgegen wirken.


Anmelden zum Antworten