#include <iostream>
using namespace std;
class Conta {
private:
double saldo = 0.0;
void descontarTarifa() { saldo -= 0.25; }
public:
void depositar(double valor) {
saldo += valor;
descontarTarifa();
}
double getSaldo() { return saldo; }
};
int main() {
Conta c;
c.depositar(100);
cout << c.getSaldo();
}
O que o código acima imprime?
#include <iostream>
using namespace std;
class Conta {
private:
double saldo = 0.0;
void descontarTarifa() { saldo -= 0.25; }
public:
void depositar(double valor) {
saldo += valor;
descontarTarifa();
}
double getSaldo() { return saldo; }
};
int main() {
Conta c;
c.depositar(100);
cout << c.getSaldo();
}
Passo 1
O enunciado pergunta explicitamente: “O que o código acima imprime?”
Informações relevantes fornecidas pelo código:
Informações relevantes fornecidas pelo código:
- A classe
Contatem um membro privadosaldoinicializado comescrito no código como 0.0(ou seja,). - Há um método privado
descontarTarifa()que fazsaldo -= 0.25(ou seja, subtrai). - O método público
depositar(double valor)faz primeirosaldo += valor(soma o depósito) e em seguida chamadescontarTarifa()(aplica a tarifa). - O método público
getSaldo()retorna o valor desaldo. - Em
main()é criado um objetoConta c;, chama-sec.depositar(100);(ou seja, passa-secomo valor) e depois cout << c.getSaldo();imprime o saldo atual.
Passo 2
Vamos seguir a execução passo a passo, linha a linha relevante para o resultado. Primeiro, no momento da criação do objeto (no código aparece como
c o membro saldo começa com o valor definido na classe:
0.0). Isso significa que, antes de qualquer operação, temosPasso 3
Em , a soma é
main() é chamada a operação c.depositar(100);. Dentro de depositar ocorre a primeira ação: saldo += valor. Como valor é
Ou seja, imediatamente após somar o depósito temos
.
Passo 4
Ainda dentro de . Aplicando isso ao saldo atual:
depositar o código chama descontarTarifa(). Esse método é privado, mas isso só impede chamadas externas; dentro da própria classe Conta métodos privados podem ser chamados normalmente — por isso a chamada funciona. O que ele faz é saldo -= 0.25, isto é, subtrai
Logo, depois do depósito e da tarifa, o valor armazenado em .
saldo é
Passo 5
O método . Em seguida
getSaldo() retorna esse valor
cout << c.getSaldo(); escreve esse número no fluxo de saída padrão. Em C++ o cout imprime números de ponto flutuante com o separador decimal padrão da locale C, que usa o ponto (.), então o valor é impresso como 99.75. Não há nenhuma formatação extra no código (como std::fixed ou setprecision), mas como o número resultante tem representação simples, a saída exibida será exatamente 99.75.Passo 6
Resumo didático rápido (para provar que você consegue repetir isso na prova): ao depositar
começa em
, soma dá
, tarifa de
subtrai e resulta em
;
cout imprime esse valor com ponto decimal, portanto imprime 99.75. Força aí, tá indo bem — só lembrar de seguir a ordem das operações e a diferença entre acessibilidade private/public em C++.