Foro con Clase C/C++

Un objeto que crea otros objetos?

Oriol

Nº de hilos:3

Nº de mensajes:6

martes, 29 de junio de 2021


Buenas,

Una pregunta: un constructor de una clase, puede generar objetos de otra clase? Por ejemplo:

class A {

  A();

   ...

}

A::A (){

...

}

class B {

   B()

   ...

}

 

B::B (){

    A aa ();

}

 

¿Si es que sí, el objeto aa creado por el constructor B tiene ámbito?

No sé si me he explicado muy bien.

 

Muchas gracias por todo.

Tema cerrado

Steven R. Davidson

Nº de hilos:0

Nº de mensajes:1

martes, 29 de junio de 2021


Hola Oriol,

En primer lugar, la instanciación es:

A aa;

No hay paréntesis, porque de lo contrario, el compilador interpretaría esa línea como la declaración de una función llamada, aa

Respondiendo a la pregunta, sí se puede crear objetos dentro de un constructor. El ámbito de aa es local al constructor. Esto implica que cuando termine la invocación del constructor B::BB() se invocará automáticamente el destructor, A::~A() para el objeto (local), aa. Esto ocurrirá cada vez que se instancie un objeto de la clase B.

Si interesa que el objeto, aa, siga con "vida", entonces puede definirlo como miembro de la clase, B. Por ejemplo,

class B
{
private:
  A aa;

public:
  B();
};

B::B() {}

Automáticamente, se construirá el objeto aa invocando su constructor: A::A().

Espero que esto aclare la duda.

Steven

Tema cerrado

Oriol

Nº de hilos:3

Nº de mensajes:6

jueves, 1 de julio de 2021


Muchisimas gracias!

Tema cerrado