Rumah > pembangunan bahagian belakang > C++ > Mengapa Objek Const Binaan Lalai dalam C Memerlukan Pembina Lalai Ditakrifkan Pengguna?

Mengapa Objek Const Binaan Lalai dalam C Memerlukan Pembina Lalai Ditakrifkan Pengguna?

Barbara Streisand
Lepaskan: 2024-11-25 02:54:10
asal
572 orang telah melayarinya

Why Do Default-Constructed Const Objects in C   Require a User-Defined Default Constructor?

Mengapakah Pembina Lalai Ditakrifkan Pengguna Diperlukan untuk Objek Konst Binaan Lalai dalam C ?

Piawaian C menentukan dalam bahagian 8.5 bahawa untuk objek const yang dimulakan lalai, jenisnya mestilah kelas dengan lalai yang disediakan pengguna pembina. Memahami keperluan ini memerlukan memahami perbezaan antara kelas POD (Data Lama Biasa) dan kelas bukan POD.

Kelas POD lwn. Bukan POD

Kelas POD ialah kelas tersebut tanpa pembina, pemusnah atau fungsi ahli maya yang ditentukan pengguna. Mereka boleh dimulakan dengan memori yang tidak dimulakan, membenarkan peruntukan memori yang cekap dan manipulasi ingatan terus.

Kelas bukan POD, sebaliknya, adalah kelas yang melanggar mana-mana kekangan POD. Ia mesti dimulakan sebelum digunakan, dan percubaan untuk memulakannya dengan memori yang tidak dimulakan mengakibatkan tingkah laku yang tidak ditentukan.

Keperluan untuk Pembina Lalai

Piawaian menguatkuasakan keperluan pengguna -menyediakan pembina lalai untuk objek const yang dibina lalai kerana:

  • Memastikan Utiliti Objek: Jika kelas POD tidak mempunyai pembina yang ditentukan pengguna, ia kekal tidak dimulakan secara lalai. Mengisytiharkan objek const bagi kelas POD yang tidak dimulakan akan menjadikan ia tidak berguna, kerana nilainya tidak boleh diubah suai.

    POD p1; // uninitialized - can be assigned later
    const POD p2; // uninitialized - error, cannot be modified
    Salin selepas log masuk
  • Memudahkan Permulaan Bukan POD: Pengguna- pembina yang ditentukan menjadikan kelas bukan POD. Mengisytiharkan objek const bagi kelas bukan POD menjamin pemulaannya, tidak kira sama ada pemula disediakan.

    nonPOD_B b1; // initialized
    const nonPOD_B b2; // initialized
    Salin selepas log masuk

Oleh itu, dengan memerlukan pembina lalai yang disediakan pengguna untuk lalai- objek const yang dibina, standard C memastikan bahawa objek const kelas POD pun dimulakan dengan betul dan, dengan itu, boleh digunakan.

Atas ialah kandungan terperinci Mengapa Objek Const Binaan Lalai dalam C Memerlukan Pembina Lalai Ditakrifkan Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan