Questão 1476258

Tecnologia da Informação · 2009

Questão

ID 1476258

Disciplina: Tecnologia da Informação

Assunto: C e C++

Ano: 2009 Banca: CESPE CEBRASPE - Centro de Seleção e de Promoção de Eventos UnB Órgão: Instituto Nacional de Pesquisas Espaciais


#include <iostream>

#include <stdexcept>

using namespace std;

class Conta {

protected:

double saldo;

public :

Conta(double valor) throw (invalid_argument){

if (valor < 0) throw invalid_argument("Erro.");

saldo = valor;

}

double getSaldo() const {return saldo;}

void depositar(double) throw (invalid_argument);

virtual void sacar(double) throw (invalid_argument) = 0;

};

void Conta::depositar(double valor) throw (invalid_argument){

if (valor < 0) throw invalid_argument("Erro.");

saldo = saldo + valor;

}

class ContaEspecial:public Conta {

double limite;

public:

ContaEspecial(double valor,double limite)

throw (invalid_argument):Conta(valor){

this->limite = limite;

}

void depositar(double) throw (invalid_argument);

void sacar(double valor) throw (invalid_argument);

};

void ContaEspecial::sacar(double valor) throw (invalid_argument){

if (valor < 0 || valor > limite)

throw invalid_argument("Erro.");

saldo = saldo - valor;

}

Tendo como referência o trecho de código C++ acima, julgue os itens a seguir.

A classe Conta não pode ser instanciada. O código na classe ContaEspecial pode acessar o atributo saldo da classe Conta. O construtor da classe Conta é invocado quando a classe ContaEspecial é instanciada. Há métodos inline na classe Conta.

Alternativas da questão 1476258
Pular para o conteúdo principal