vectores una programacion objetos matriz matrices matematicas ejemplo dentro definicion constructores con clases clase arreglos arreglo c++ arrays constructor new-operator

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.