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.
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
Oriol
Nº de hilos:3
Nº de mensajes:6
jueves, 1 de julio de 2021
Muchisimas gracias!