Tengo dificultades para comprender el siguiente párrafo citado de cppreference sobre el constructor trivial predeterminado. He buscado stackoverflow pero aún no obtuve una respuesta clara. Así que por favor ayuda.
Un constructor predeterminado trivial es un constructor que no realiza ninguna acción. Todos los tipos de datos compatibles con el lenguaje C (tipos POD) son trivialmente construibles por defecto. Sin embargo, a diferencia de C, los objetos con constructores triviales predeterminados no se pueden crear simplemente reinterpretando el almacenamiento adecuadamente alineado, como la memoria asignada con std :: malloc: position-new es necesaria para introducir formalmente un nuevo objeto y evitar un posible comportamiento indefinido.
Específicamente, si el constructor trivial predeterminado no hace nada, ¿por qué no podemos reinterpretar el almacenamiento y pretender que hay un objeto con el tipo dado? ¿Podría proporcionar algunos ejemplos del posible comportamiento indefinido que esto causaría?
*reinterpret_cast<float*>(&someNonFloatObject) = 0.1f;
. C ++ tiene un concepto de objetos y vidas de objeto, especificado en la máquina abstracta, y el hecho de que no haya instrucciones de CPU para crear un objeto desde el almacenamiento no significa que no haya diferencia en la máquina abstracta.