PiR2
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dúvida em C++

2 participantes

Ir para baixo

Dúvida em C++ Empty Dúvida em C++

Mensagem por Henrique M. Martins Sex 19 Fev 2016, 19:29

Olá tenho uma dúvida em um programa de C++ e gostaria de saber se podem me ajudar?

Estou aprendendo C++ e peço desculpas se as dúvidas forem simples demais.


Qual seria a saída e por que?

class A{
    public:
    A() {
      cout << 1;
 }
};
class B: public A {
   public:
   B() {
     cout << 2;
 }
};
int main() {
A o1;
Bo2;
}


Desde já agradeço pela compreensão.

Henrique M. Martins
Iniciante

Mensagens : 7
Data de inscrição : 19/02/2016
Idade : 32
Localização : Rio Grande do Sul (RS)

Ir para o topo Ir para baixo

Dúvida em C++ Empty Re: Dúvida em C++

Mensagem por Baltuilhe Sex 19 Fev 2016, 21:02

Boa noite, Henrique!

Veja que foram criadas duas classes:
Classe A, com CONSTRUTOR A()
e
Classe B, com CONSTRUTOR B(). A diferença é que a classe B é derivada da classe A (class B : public A) este public A diz que todo objeto de B é um objeto do tipo A.

Ambos construtores só imprimem um valor simples na tela, nada mais além disso.

Mas, o que é um construtor?
É um método especial invocado AUTOMATICAMENTE na criação de um objeto da classe.
O método CONSTRUTOR não tem tipo (não pode ser void) mas pode conter parâmetros (o que não é o caso do exemplo).

Na função main foram criados dois objetos: o1 e o2.

O objeto o1 é do tipo A. Ao ser criado invoca o construtor A que imprime na tela "1".
O objeto o2 é do tipo B. Ao ser criado também invocará o seu construtor... mas, como a classe B é derivada da classe A, o objeto o2 invocará PRIMEIRO o construtor A para depois invocar o seu próprio construtor. Portanto, ao criar o objeto o2 imprimirá na tela, sequencialmente, "1" e depois "2".

Se executar, ficará na tela então o seguinte:
112

Obs.: Vou colar o código com alguns consertos para executar, ok?

Código:
#include<iostream>

using namespace std;

class A
{
   public:
   
   A()
   {
      cout << 1;
   }
};

class B: public A
{
   public:
   
   B()
   {
      cout << 2;
   }
};

int main()
{
   A o1;
   B o2;
}



Senão não roda Smile

Abraços!

Espero ter ajudado!
Baltuilhe
Baltuilhe
Fera
Fera

Mensagens : 699
Data de inscrição : 23/12/2015
Idade : 47
Localização : Campo Grande, MS, Brasil

Ir para o topo Ir para baixo

Dúvida em C++ Empty Re: Dúvida em C++

Mensagem por Henrique M. Martins Seg 22 Fev 2016, 10:52

Muito obrigado, com certeza ajudou. Explicação perfeita!

Abraços!

Henrique M. Martins
Iniciante

Mensagens : 7
Data de inscrição : 19/02/2016
Idade : 32
Localização : Rio Grande do Sul (RS)

Ir para o topo Ir para baixo

Dúvida em C++ Empty Re: Dúvida em C++

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos