SóProvas


ID
17140
Banca
CESPE / CEBRASPE
Órgão
TSE
Ano
2007
Provas
Disciplina
Programação
Assuntos

Código para as questões 40 e 41

class Porta {

int numero;

public:

Porta(int numero):numero(numero){}

virtual ~Porta(){cout << "Fechar" << "\n";}

virtual void enviar(char) throw (invalid_argument) = 0;

int getNumero() const {return numero;}

};

class Serial:public Porta {

string nome;

public:

Serial(int numero, string nome):Porta(numero), nome(nome){}

~Serial(){cout << "Encerrar" << "\n";}

string getNome() const;

void enviar(char) throw (invalid_argument);

};

inline string Serial::getNome() const {

return nome;

}

void Serial::enviar(char dado) throw (invalid_argument){

if (dado == '0')

throw invalid_argument("Valor nulo");

cout << "Enviar " << dado << "\n";

}

Ainda considerando o trecho de código apresentado, escrito na linguagem C++, assinale a opção correta.

Alternativas
Comentários
  • a) As classes Porta e Serial são abstratas e não podem ser instanciadas.(Errrado)
    Uma classe abstrata em C++ é definida qd existe uma função pura:

    class AbstractClass {public: virtual void AbstractMemberFunction() = 0; //função pura };
    b) Os métodos públicos na classe Porta são públicos na classe Serial. (Correto)
    Pois como Porta é Classe Pai vai e Serial é a classe filho, vai herda todos os métodos/ atributos definidos como públicos e/ou protegidos 

    c) 
    Em todo o código, só há um método inline. (Errado)
    inline é um keyword opcional, na qual define métodos não sobrecarregado. EM sua maioria, os desenvolvedores não utilizam, pois implicitamente "inline" está definido, caso a a função nao seja sobrecarregada.

    d) Na classe Porta há erro de sintaxe pois destrutores não podem ser virtuais. (Errado)

    Destrutores não podem levar argumento e não podem ser sobrecarregados. e a palavra chave virtual não significa sobrecarregamento (Em C# e outra linguagens O.O o "virtual" sinaliza sobrecarregamento de metodo), mas C++  é utilizada para dizer que queremos que faça a avaliação da chamada dessa função em run-time, não em compile-time como é feito por padrão.