Ho cercato ma non ho trovato risposta a questo. C'è un modo per dire all'operatore new
di di non chiamare i costruttori di classe?Array non inizializzato di classi C++
MyObject* array = new MyObject[1000];
Questo chiamerà MyObject()
mille volte! Voglio riempire la memoria allocata e non ho bisogno di alcuna informazione inizializzata nel costruttore. L'utilizzo di malloc()
non è molto armonico codice C++ imho.
MyObject* array = (MyObject*) malloc(sizeof(MyObject) * 1000);
Grazie per la risposta. Eventuali svantaggi dell'uso di un cast di stile C su 'static_cast'? La sintassi della costruzione era nuova per me. La velocità è la chiave, non credo che una mappa si adatti perché ho davvero bisogno di un array lineare di un numero fisso di elementi. –
@Niklas In questo caso, non ci sono svantaggi. Il cast di stile C è definito come il primo di un set di cast che avrà successo. In questo caso, sarà equivalente a un 'static_cast'. Tuttavia, preferisco essere esplicito. Inoltre, ci sono molte informazioni su Stack Overflow sulla nuova sintassi del posizionamento. –
@NiklasR Solo per essere sicuri: vuoi creare oggetti in sequenza (a partire dall'indice 0 e superiori) o in posizioni arbitrarie all'interno dell'array? Se li vuoi in sequenza, allora la risposta 'std :: vector' è lenta. –