000
27.08.2007, 12:16 Uhr
banshee
|
hallöchen,
wiedermal drängt sich mir eine Frage im Stile Was-wäre-wenn auf
Ich habe gestern zum ersten mal von der Existenz des explicit Schlüsselworts erfahren und mich würde jetzt mal interessieren, was in folgenden Fällen passiert:
1)
C++: |
class A { A(int a = 1, int b = 2, int c = 3); }
int main() { A a = 3; }
|
Wird der Aufruf dann zu a = new A(3, 2, 3) ?
2)
C++: |
class A { A(string a = "1", int b = 2, int c = 3); }
int main() { A a = 3; }
|
Wie ist es hier? a = new A("1", 3, 3); ?
3)
C++: |
class A { A(int a = 1, int b = 2, int c); }
int main() { A a = 3; }
|
und hier a = new A(1, 2, 3); ?
Ist es eigentlich nicht klüger jeden Konstruktor als explicit zu deklarieren und die bei denen man es nicht braucht eben wegzulassen als andersrum. Mir kommt das irgendwie so vor wie break, was man auch in 99% der Fälle braucht aber doch so implementiert wurde, dass man es immerwieder dazuschreiben muss. |