Avatar ·

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