Ho difficoltà a comprendere il seguente paragrafo citato da cppreference su un banale costruttore predefinito. Ho cercato StackOverflow ma non ho ancora ricevuto una risposta chiara. Quindi per favore aiutatemi.
Un banale costruttore predefinito è un costruttore che non esegue alcuna azione. Tutti i tipi di dati compatibili con il linguaggio C (tipi POD) sono banalmente costruibili per difetto. A differenza di C, tuttavia, gli oggetti con banali costruttori predefiniti non possono essere creati semplicemente reinterpretando la memoria opportunamente allineata, come la memoria allocata con std :: malloc: il posizionamento-nuovo è necessario per introdurre formalmente un nuovo oggetto ed evitare potenziali comportamenti indefiniti.
In particolare, se il banale costruttore predefinito non fa nulla, perché non possiamo reinterpretare la memoria e far finta che ci sia un oggetto con il tipo specificato? Potresti fornire alcuni esempi del potenziale comportamento indefinito che ciò potrebbe causare?
*reinterpret_cast<float*>(&someNonFloatObject) = 0.1f;. Il C ++ ha un concetto di oggetti e durata degli oggetti, specificato sulla macchina astratta, e solo perché non ci sono istruzioni CPU per creare un oggetto dalla memoria non significa che non ci siano differenze sulla macchina astratta.