Saya mengalami kesulitan dalam memahami paragraf berikut yang dikutip dari cppreference tentang konstruktor standar sepele. Saya telah mencari stackoverflow tetapi masih belum mendapatkan jawaban yang jelas. Jadi tolong bantu.
Konstruktor default sepele adalah konstruktor yang tidak melakukan tindakan. Semua tipe data yang kompatibel dengan bahasa C (tipe POD) sepele-standar dibangun. Namun, tidak seperti dalam C, objek dengan konstruktor standar sepele tidak dapat dibuat hanya dengan menafsirkan kembali penyimpanan yang selaras, seperti memori yang dialokasikan dengan std :: malloc: penempatan-baru diperlukan untuk secara resmi memperkenalkan objek baru dan menghindari kemungkinan perilaku yang tidak terdefinisi.
Khususnya, jika konstruktor default sepele tidak melakukan apa-apa, mengapa kita tidak bisa menafsirkan kembali penyimpanan dan berpura-pura ada objek dengan tipe yang diberikan? Bisakah Anda memberikan beberapa contoh untuk kemungkinan perilaku tidak terdefinisi yang akan ditimbulkan oleh ini?
*reinterpret_cast<float*>(&someNonFloatObject) = 0.1f;
. C ++ memiliki konsep objek dan masa hidup objek, yang ditentukan pada mesin abstrak, dan hanya karena tidak ada instruksi CPU untuk membuat objek dari penyimpanan tidak berarti bahwa tidak ada perbedaan pada mesin abstrak.