Mengapa C Memerlukan Pembina Lalai Disediakan Pengguna untuk Membina Lalai-Membina Objek const?
Piawaian C mewajibkan bahawa jika program panggilan untuk permulaan lalai objek jenis const-qualified, jenis kelas asas mesti mempunyai lalai yang disediakan pengguna pembina. Keperluan ini berpunca daripada fakta bahawa:
Untuk mengelakkan kekeliruan ini, piawaian menetapkan bahawa objek const tidak boleh dibina daripada jenis POD yang kekurangan pembina lalai yang disediakan pengguna. Ini memastikan bahawa objek const sentiasa dimulakan semasa penciptaan.
Perbezaan Antara Kelas POD dan Bukan POD
Untuk menjelaskan, keperluan piawaian terpakai khusus untuk objek const bukan -Kelas POD. Kelas POD, yang tidak mempunyai fungsi maya atau kelas asas dan mempunyai ahli data yang merupakan POD sendiri, boleh dimulakan secara lalai walaupun tanpa pembina yang ditentukan pengguna. Sebaliknya, kelas bukan POD memerlukan pembina lalai yang disediakan pengguna untuk mendayakan permulaan lalai.
Contoh Ilustrasi
Pertimbangkan coretan kod berikut:
struct B { B(): x(42) {} int doSomeStuff() const { return x; } int x; }; struct A { A() {} // Required by the standard B b; // Illustration purpose }; int main() { const A a; // Valid due to user-provided default constructor in A. }
Dalam contoh ini, objek const 'a' struct A boleh dibina secara lalai kerana A mempunyai pembina lalai yang disediakan pengguna, yang memenuhi keperluan standard untuk kelas bukan POD.
Atas ialah kandungan terperinci Mengapa Kelas C Mesti Mempunyai Pembina Lalai Ditakrifkan Pengguna untuk Membina Lalai-Membina Objek `const`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!