c++ - una - vectores y matrices en programacion
¿Por qué C++ no permite `nuevo` llamar al constructor al crear matrices (2)
Digamos que estás creando una matriz de objectes en el montón así:
myClass * objectPtr = new myClass[10];
new
solo invoca el constructor predeterminado, y (basado en mis lecturas) no permite que se invoque ningún otro constructor.
¿Hay alguna lógica detrás de por qué lo new
no puede invocar a ningún otro constructor? Parecería mejor hacer algo como
myClass * objectPtr = new myClass[10](12);
Opuesto a
myClass * objectPtr = new myClass[10];
objectPtr[0] = myClass(12);
objectPtr[1] = myClass(12);
...
¿Por qué C ++ no permite que los
new
llamen al constructor al crear matrices?
Lo hace. Es solo un poco tedioso:
struct my_class
{
my_class() {}
my_class(int, int) {}
};
int main()
{
my_class* objectPtr = new my_class[3]{my_class(1,2),
my_class(),
my_class(3,4)};
}
Por lo general, no querrá construir el mismo objeto muchas veces, por lo tanto, construirá muchos objetos predeterminados y con un ciclo for
puede cambiarlos según sus necesidades.
Otra forma de usar es:
myClass **ObjectPointers = new myClass*[NUMBER_OF_OBJECTS];
for (int i=0; i<NUMBER_OF_OBJECTS; ++i)
ObjectPointers[i] = new myClass(1,2,3,...); # <-- non-default constructor
De esta forma, asigna dinámicamente punteros a objetos que puede construir por separado.