Avatar ·

O que significa a palavra-chave explicit em C++? Quando e por que usá-la?

Olá a todos! Acabei de começar a estudar C++ e me deparei com a palavra-chave `explicit`. Entendi que ela é usada antes de construtores, mas não compreendo completamente por que ela é necessária e em quais casos aplicá-la. Eu tenho uma classe simples para trabalhar com vetor: ```cpp class Vector { public: Vector(int size) { data = new int[size]; sz = size; } private: int* data; int sz; }; ``` Eu posso escrever um código assim: ```cpp Vector v = 10; // Por que isso funciona?! ``` O compilador compila isso sem erros. Mas `10` não é um número? Por que ele de repente se transforma em um objeto Vector? Isso é alguma conversão implícita? Parece perigoso para mim, porque eu posso acidentalmente passar um número onde se espera um objeto, e o programa se comportará de forma estranha. Por exemplo, se eu tenho uma função: ```cpp void processVector(Vector v) { /* ... */ } int main() { processVector(42); // Erro? Ou não? Agora isso funciona! return 0; } ``` Eu