document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /* Exemplo de heranca multipla de classes */
  2.  
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. /* Classe que represente esportistas genericamente */
  7. class esportista
  8. {
  9.     protected:
  10.         /* Dados genericos, que todo esportista deve ter */
  11.         string nome;
  12.         int idade;
  13.         float velocidade_maxima;
  14.     public:
  15.         /* Funcao para preencher os dados do esportista */
  16.         void define_esp();
  17.         /* Funcao para escrever os dados do esportista na tela */
  18.         void escreve_esp();
  19. };
  20.  
  21. /* Funcao para preencher os dados do esportista.
  22. Interacao com o usuario */
  23. void esportista::define_esp()
  24. {
  25.     cout << "Nome: ";
  26.     cin >> nome;
  27.     cout << "Idade: ";
  28.     cin >> idade;
  29.     cout << "Velocidade maxima: ";
  30.     cin >> velocidade_maxima;
  31. }
  32.  
  33. /* Funcao para escrever os dados do esportista na tela */
  34. void esportista::escreve_esp()
  35. {
  36.     cout << "Nome: " << nome << endl;
  37.     cout << "Idade: " << idade << endl;
  38.     cout << "Velocidade maxima: " << velocidade_maxima << endl;
  39. }
  40.  
  41. /* Classe que represente uma conta bancaria */
  42. class conta
  43. {
  44.     protected:
  45.         /* Dados genericos da conta */
  46.         float saldo;
  47.         string conta_corrente, agencia;
  48.     public:
  49.         /* Funcao para preencher os dados da conta */
  50.         void define_conta();
  51.         /* Funcao para escrever os dados da conta na tela */
  52.         void escreve_conta();
  53. };
  54.  
  55. /* Funcao para preencher os dados da conta.
  56. Interacao com o usuario */
  57. void conta::define_conta()
  58. {
  59.     cout << "Conta corrente: ";
  60.     cin >> conta_corrente;
  61.     cout << "Agencia: ";
  62.     cin >> agencia;
  63.     cout << "Saldo: ";
  64.     cin >> saldo;
  65. }
  66.  
  67. /* Funcao para escrever os dados da conta na tela */
  68. void conta::escreve_conta()
  69. {
  70.     cout << "Conta corrente: " << conta_corrente << endl;
  71.     cout << "Agencia: " << agencia << endl;
  72.     cout << "Saldo: " << saldo << endl;
  73. }
  74.  
  75. /* Classe que representa nadadores, herdando as
  76.    classes de esportistas e de contas bancarias
  77.    (HERANCA MULTIPLA) */
  78. class nadador: public esportista, public conta
  79. {
  80.     private:
  81.         /* Dados que so o nadador deve ter */
  82.         float folego;
  83.     public:
  84.         /* Funcao para definir os dados do nadador */
  85.         void define_nad();
  86.         /* Funcao para escrever os dados do nadador na tela */
  87.         void escreve_nad();
  88. };
  89.  
  90. /* Funcao para definir os dados do nadador.
  91.    Interacao com o usuario */
  92. void nadador::define_nad()
  93. {
  94.     /* Uso de funcao herdada da classe \'esportista\' */
  95.     define_esp();
  96.     /* Definicao de dados exclusivos ao nadador */
  97.     cout << "Folego: ";
  98.     cin >> folego;
  99.     /* Uso de funcao herdada da classe \'conta\' */
  100.     define_conta();
  101. }
  102.  
  103. /* Funcao para escrever os dados do nadador na tela */
  104. void nadador::escreve_nad()
  105. {
  106.     /* Uso de funcao herdada da classe \'esportista\' */
  107.     escreve_esp();
  108.     /* Uso de dados exclusivos ao nadador */
  109.     cout << "Folego: " << folego << endl;
  110.     /* Uso de funcao herdada da classe \'conta\' */
  111.     escreve_conta();
  112. }
  113.  
  114. int main(int argc, char *argv[])
  115. {
  116.     nadador nad1;
  117.    
  118.     cout << "----------------------------------------------------\\n";
  119.     /* Definicao dos dados do nadador */
  120.     nad1.define_nad();
  121.     cout << "----------------------------------------------------\\n";
  122.     /* Escrita dos dados do nadador na tela */
  123.     nad1.escreve_nad();
  124.     cout << "----------------------------------------------------\\n";
  125.     return EXIT_SUCCESS;
  126. }
');