Avatar ·

¿Qué significa la palabra clave explicit en C++? ¿Cuándo y por qué usarla?

¡Hola a todos! Acabo de empezar a aprender C++ y me topé con la palabra clave `explicit`. Entiendo que se usa antes de los constructores, pero no termino de comprender para qué sirve y en qué casos aplicarla. Tengo una clase simple para trabajar con un vector: ```cpp class Vector { public: Vector(int size) { data = new int[size]; sz = size; } private: int* data; int sz; }; ``` Puedo escribir código como este: ```cpp Vector v = 10; // ¿Por qué funciona esto?! ``` El compilador lo compila sin errores. Pero ¿acaso `10` no es un número? ¿Por qué de repente se convierte en un objeto Vector? ¿Es una conversión implícita? Me parece peligroso, porque podría pasar accidentalmente un número donde se espera un objeto, y el programa se comportaría de manera extraña. Por ejemplo, si tengo una función: ```cpp void processVector(Vector v) { /* ... */ } int main() { processVector(42); // ¿Error? ¿O no? ¡Ahora funciona! return 0; } ``` Yo