Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não entendi pq só tenho que deixar um parametro implícito

A classe Titular recebe dois parametros sendo eles cpf e nome.

Por que no código só o cpf é esplicíto como strting e o parametro nome não precisou ser explicito, não entendi como a linguagem c++ considerou um parametro um vetor de caracteres e o outro parametro como uma string mesmo não sendo explícito ?

Conta umaConta("123456", Titular(string ("123.456.789-10"), "Joao"));

1 resposta
solução!

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!

Conteúdos relacionados

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!