O que significa a palavra-chave explicit em C++ e para que ela serve?
Olá a todos! Comecei a estudar C++ e me deparei com a palavra-chave `explicit` antes dos construtores. Até agora, entendi que ela está relacionada de alguma forma com conversões implícitas, mas não compreendo completamente por que usá-la.\n\nAqui está um exemplo simples que escrevi. Tenho uma classe `String` que recebe um número (tamanho da string) no construtor:\n\n```cpp\nclass String {\npublic:\n String(int size) {\n // algum código\n }\n};\n\nvoid printString(const String& s) {\n // imprimimos a string\n}\n\nint main() {\n printString(42); // Isso funciona! Mas por quê?\n return 0;\n}\n```\n\nEstou passando para a função `printString` o número `42`, embora ela espere um objeto `String`. E isso compila! Acho isso estranho e pode levar a erros. Por exemplo, se eu acidentalmente passar o tipo errado, o compilador