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!