У мене виникають труднощі в розумінні наступного абзацу, цитованого з cppreference about тривіального конструктора за замовчуванням. Я шукав stackoverflow, але все одно не отримав чіткої відповіді. Тож, будь ласка, допоможіть.
Тривіальний конструктор за замовчуванням - це конструктор, який не виконує жодної дії. Усі типи даних, сумісні з мовою С (типи POD), можуть трибуально конструюватися за замовчуванням. Однак, на відміну від C, об'єкти з тривіальними конструкторами за замовчуванням неможливо створити просто переінтерпретувати відповідним чином вирівняне сховище, наприклад, пам'ять, виділену за допомогою std :: malloc: розташування-new, щоб офіційно ввести новий об'єкт і уникнути можливої не визначеної поведінки.
Зокрема, якщо тривіальний конструктор за замовчуванням нічого не робить, чому ми не можемо переосмислити сховище і зробити вигляд, що існує об'єкт із заданим типом? Чи можете ви надати декілька прикладів можливої невизначеної поведінки, яка це спричинить?
*reinterpret_cast<float*>(&someNonFloatObject) = 0.1f;
. C ++ має поняття об'єктів та терміни життя об'єкта, вказане на абстрактній машині, і те, що не існує інструкції процесора для створення об'єкта зі сховища, не означає, що на абстрактній машині немає різниці.