#include <iostream>
using namespace std;
class Cliente {
private:
string nome;
public:
void setNome(string n) { nome = n; }
string getNome() { return nome; }
};
int main() {
Cliente c;
c.setNome("João");
cout << c.getNome();
}
O que o código acima imprime?
#include <iostream>
using namespace std;
class Cliente {
private:
string nome;
public:
void setNome(string n) { nome = n; }
string getNome() { return nome; }
};
int main() {
Cliente c;
c.setNome("João");
cout << c.getNome();
}
Passo 1
O enunciado mostra um programa C++ e pergunta: “O que o código acima imprime?”
Informações relevantes dadas pelo enunciado:
Informações relevantes dadas pelo enunciado:
- Há a diretiva de inclusão
#include <iostream>eusing namespace std;. - Existe a classe
Clientecom um membro privadonomedo tipostring. - A classe tem dois métodos públicos:
void setNome(string n) { nome = n; }string getNome() { return nome; }
- No
main():- É declarado um objeto
Cliente c;. - É chamada
c.setNome("João");. - É chamada
cout << c.getNome();.
- É declarado um objeto
- Não há outras chamadas a
coutnemendl/\napós a impressão.
Passo 2
Entendendo o que faz
setNome("João"):- Em C++, a string literal
"João"(tipoconst char[]) é automaticamente convertida para umstd::stringquando passada para a função que recebestring n. - A função
setNomerecebe essestring ne executa a atribuiçãonome = n;. Aquinomeé o membro privado do objetoc. Após essa linha, o membroc.nomecontém a sequência de caracteresJoão. - Em resumo: depois de
c.setNome("João");, o objetocarmazena internamente o textoJoão.
Passo 3
Entendendo o que faz
cout << c.getNome();:- A chamada
c.getNome()retorna o valor atual do membronome(uma cópia dostd::stringcontendoJoão). - O operador de inserção
operator<<destd::coutsabe como imprimir umstd::string: ele escreve os caracteres da string no fluxo de saída padrão (normalmente o terminal). - Não há
endlnem'\n'após a chamada, então o programa escreve apenas os caracteres da string e não adiciona uma nova linha ao final.
Passo 4
Conclusão passo a passo do comportamento do programa:
setNomearmazenaJoãono objetoc.getNomeretorna essa string.cout <<escreve exatamenteJoãono terminal.- Não há nova linha ao final da saída, então o cursor fica logo após o
o.
Resposta
João