Questão
ID 1476258Disciplina: 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.