Мне трудно понять следующий абзац, цитируемый из cppreference о тривиальном конструкторе по умолчанию. Я искал stackoverflow, но все еще не получил четкого ответа. Поэтому, пожалуйста, помогите.
Тривиальный конструктор по умолчанию - это конструктор, который не выполняет никаких действий. Все типы данных, совместимые с языком C (типы POD), легко конструируются по умолчанию. В отличие от C, однако, объекты с тривиальными конструкторами по умолчанию не могут быть созданы путем простой интерпретации соответствующим образом выровненного хранилища, такого как память, выделенная с помощью std :: malloc :place-new, требуется для формального введения нового объекта и предотвращения возможного неопределенного поведения.
В частности, если простой конструктор по умолчанию ничего не делает, почему мы не можем интерпретировать хранилище и делать вид, что существует объект с данным типом? Не могли бы вы привести несколько примеров возможного неопределенного поведения, которое это может вызвать?
*reinterpret_cast<float*>(&someNonFloatObject) = 0.1f;
. C ++ имеет концепцию объектов и времени жизни объектов, заданную на абстрактной машине, и тот факт, что отсутствует инструкция ЦП для создания объекта из хранилища, не означает, что на абстрактной машине нет различий.