Questões de C++ (parte2)
#include <iostream> #include <string> #include <vector> using namespace std; //----------------------------------pergunta 1 class Jogador { public: void treinar() { cout << "\n treinar"; } virtual void jogar() { cout << "\n jogar"; } }; class Defesa: public Jogador { public: void treinar(){ cout << "\n treinar defesa"; } void jogar() override { cout << "\n jogar defesa"; } //override: redefinição de uma função virtual da classe base }; class Atacante : public Jogador { public: void treinar() { cout << "\n treinar ataque"; } void jogar() override { cout << "\n jogar ataque"; } }; class PontaDeLanca : public Atacante { }; int main() { vector<Jogador*> jogadores; jogadores.push_back(new Defesa); jogadores.push_back(new Atacante); jogadores.push_back(new PontaDeLanca); for(Jogador * j: jogadores) { j->treinar(); j->jogar(); } } output: treinar jogar defesa treinar jogar ataque treinar jogar ataque
#include <iostream> #include <string> #include <vector> using namespace std; //----------------------------------pergunta 2 class Ponto { int x, y; public: Ponto(int x0 = 0, int y0 = 0) { x = x0; y = y0; } }; class Figura { string nome; public: Figura(const string & n) { nome = n; } void setNome(const string &n ) { nome = n; } }; class Circulo : public Figura { Ponto centro; const int raio; public: //qual sera o construtor.. //resposta1: Circulo(int x0, int y0, int r) : centro(x0, y0), raio(r), Figura("circulo") { }; //resposta2 Circulo(int r) : raio(r), Figura("circulo") { }; }; int main() { }
#include <iostream> #include <string> #include <vector> using namespace std; //----------------------------------pergunta 3 class SerVivo { public: virtual void f() = 0; virtual void g() = 0; }; class Animal : public SerVivo { public: virtual void h() = 0; void f() override { /* ... */} }; class Ave : public Animal { public: //a classe Ave tem que ser concreta //... //sabe-se que: //Uma classe abstrata é uma classe para a qual um ou mais //métodos são declarados, mas não definidos //O polimorfismo permite que classes abstratas consigam //receber comportamentos através de classes concretas //As classes derivadas das classes abstratas são conhecidas //como classes concretas //f e g são funções virtuais puras logo têm de ser definidas //em Ave para que esta classe seja concreta virtual void g(){} virtual void h() {} }; int main() { }
#include <iostream> #include <string> #include <vector> using namespace std; //----------------------------------pergunta 4 class Erro { string msg; public: Erro(const string& s): msg(s){} string what() { return "(1) erro " + msg; } }; void funcao() { try { cout << "(2) antes; "; throw Erro("(3) em funcao ..."); cout << "(4) depois; "; }catch (Erro & e) { cout << e.what() << "(5) ;"; }catch(string & e) { cout << "(6) catch string;"; } cout << "(7) fim funcao; "; } int main() { try { funcao(); } catch (Erro & e) { cout << "(8) catch erro main;"; } cout << "(9) fim main; \n"; } output: (2) antes; (1) erro (3) em funcao ... (5); (7) fim funcao; (9) fim main;
#include <iostream> #include <string> #include <vector> using namespace std; //----------------------------------pergunta 5 //inicio extra enunciado class FichaAnimal { FichaAnimal(){} }; //fim extra enunciado class Gaiola { private: vector <FichaAnimal*> animais; //um vector string* ocorrencias; int nOcorrencias; public: //... //inicio extra enunciado Gaiola(const vector<FichaAnimal*>& ficha_animals, string* ocorrencias, int ocorrencias1) : animais(ficha_animals), ocorrencias(ocorrencias), nOcorrencias(ocorrencias1) { } //fim extra enunciado //resposta: ~Gaiola() { delete[] ocorrencias; } }; int main() { }
Tags : agregação, c++11, Composição, Learn C plus plus, POO, t1920n, virtual
0 thoughts on “Questões de C++ (parte2)”