Oi João, tudo bem?
Em C++, há um conceito chamado "conversão implícita", que é o que está acontecendo no seu exemplo.
Quando você passa "Joao"
diretamente para a classe Titular
, o C++ está tratando isso como um vetor de caracteres (char[]
). Mas, a classe std::string
tem um construtor que aceita um vetor de caracteres como argumento, permitindo essa conversão implícita de "Joao"
para um objeto do tipo std::string
.
Já para o CPF, você está usando string("123.456.789-10")
, o que é uma conversão explícita, onde você está dizendo diretamente ao compilador que quer que aquele valor seja tratado como uma std::string
.
A razão pela qual você não precisa ser explícito com o nome é que o C++ faz essa conversão automaticamente quando encontra um construtor adequado que aceita o tipo de dado que você está passando. No caso de std::string
, essa conversão implícita é suportada, por isso não é necessário especificar string("Joao")
.
Espero ter ajudado.
Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!
A documentação está em inglês, mas você poderá utilizar a tradução automática do navegador.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!