Que signifie le mot-clé explicit en C++ ? Quand et pourquoi l'utiliser ?
Bonjour à tous ! Je viens de commencer à apprendre le C++ et je suis tombé sur le mot-clé `explicit`. J'ai compris qu'il s'utilise devant les constructeurs, mais je ne comprends pas encore bien à quoi il sert et dans quels cas l'appliquer.
J'ai une classe simple pour travailler avec un vecteur :
```cpp
class Vector {
public:
Vector(int size) {
data = new int[size];
sz = size;
}
private:
int* data;
int sz;
};
```
Je peux écrire ce code :
```cpp
Vector v = 10; // Pourquoi cela fonctionne ?!
```
Le compilateur le compile sans erreur. Mais `10` n'est-ce pas un nombre ? Pourquoi se transforme-t-il soudainement en objet Vector ? C'est une conversion implicite ? Cela me semble dangereux, car je pourrais accidentellement passer un nombre là où un objet est attendu, et le programme se comporterait étrangement.
Par exemple, si j'ai une fonction :
```cpp
void processVector(Vector v) { /* ... */ }
int main() {
processVector(42); // Erreur ? Ou pas ? Actuellement, cela fonctionne !
return 0;
}
```
Moi
No answers yet.
Connectez-vous pour laisser une réponse