#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?

Passo 1

O enunciado pergunta explicitamente: “O que o código acima imprime?”
Informações relevantes fornecidas pelo código:
  • A classe Conta tem um membro privado saldo inicializado com 0,0 escrito no código como 0.0 (ou seja, 0.0).
  • Há um método privado descontarTarifa() que faz saldo -= 0.25 (ou seja, subtrai 0.25).
  • O método público depositar(double valor) faz primeiro saldo += valor (soma o depósito) e em seguida chama descontarTarifa() (aplica a tarifa).
  • O método público getSaldo() retorna o valor de saldo.
  • Em main() é criado um objeto Conta c;, chama-se c.depositar(100); (ou seja, passa-se 100 como 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 c o membro saldo começa com o valor definido na classe: 0,0 (no código aparece como 0.0). Isso significa que, antes de qualquer operação, temos
\text{saldo inicial} = 0{,}0.

Passo 3

Em main() é chamada a operação c.depositar(100);. Dentro de depositar ocorre a primeira ação: saldo += valor. Como valor é 100, a soma é
0{,}0 + 100 = 100{,}0.
Ou seja, imediatamente após somar o depósito temos \text{saldo} = 100{,}0.

Passo 4

Ainda dentro de 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 0{,}25. Aplicando isso ao saldo atual:
100{,}0 - 0{,}25 = 99{,}75.
Logo, depois do depósito e da tarifa, o valor armazenado em saldo é \,99{,}75.

Passo 5

O método getSaldo() retorna esse valor \,99{,}75. Em seguida 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 100 começa em 0{,}0, soma dá 100{,}0, tarifa de 0{,}25 subtrai e resulta em 99{,}75; 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++.

Resposta

99.75

Exercícios relacionados