Was bedeutet das Schlüsselwort explicit in C++? Wann und warum sollte man es verwenden?
Hallo zusammen! Ich habe gerade angefangen, C++ zu lernen und bin auf das Schlüsselwort `explicit` gestoßen. Ich habe verstanden, dass es vor Konstruktoren verwendet wird, aber ich verstehe nicht ganz, warum es notwendig ist und in welchen Fällen man es anwenden sollte.
Ich habe eine einfache Klasse für die Arbeit mit einem Vektor:
```cpp
class Vector {
public:
Vector(int size) {
data = new int[size];
sz = size;
}
private:
int* data;
int sz;
};
```
Ich kann solchen Code schreiben:
```cpp
Vector v = 10; // Warum funktioniert das?!
```
Der Compiler kompiliert dies ohne Fehler. Aber ist `10` nicht eine Zahl? Warum wird sie plötzlich zu einem Vector-Objekt? Ist das eine implizite Konvertierung? Das erscheint mir gefährlich, weil ich versehentlich eine Zahl dort übergeben könnte, wo ein Objekt erwartet wird, und das Programm sich seltsam verhalten würde.
Zum Beispiel, wenn ich eine Funktion habe:
```cpp
void processVector(Vector v) { /* ... */ }
int main() {
processVector(42); // Fehler? Oder nicht? Das funktioniert jetzt!
return 0;
}
```
Mir