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.