Rumah >pembangunan bahagian belakang >C++ >Adakah C Memulakan Sifar Ahli Data Secara Tersirat dalam Pembina Lalainya?

Adakah C Memulakan Sifar Ahli Data Secara Tersirat dalam Pembina Lalainya?

Susan Sarandon
Susan Sarandonasal
2024-11-08 03:19:02634semak imbas

Does C   Implicitly Zero-Initialize Data Members in Its Default Constructor?

Adakah C Menyediakan Pembina Lalai Tersirat?

Latar Belakang:

Kewujudan pembina lalai tersirat dalam C mempunyai menimbulkan persoalan dalam kalangan pemaju. Tuntutan buku teks mencadangkan bahawa pengkompil menghasilkan satu apabila tiada yang diisytiharkan secara eksplisit, secara teorinya memulakan ahli data kepada sifar.

Pelaksanaan Pembina Lalai

Jika tiada pembina ditakrifkan untuk kelas , pengkompil mencipta pembina lalai. Tingkah lakunya adalah seperti berikut:

  • Membina kelas asas (jika ada) dengan pembina lalai.
  • Membina setiap pembolehubah ahli mengikut tertib pengisytiharan, juga menggunakan pembina lalai.

Untuk jenis POD (Data Lama Biasa), tiada pembina eksplisit wujud, tetapi tingkah laku lalai sama dengan tiada tindakan.

Implikasi Tambahan

  • Pembina Salin, Operator Tugasan Salin, Pemusnah: Jika tiada satu pun daripada ini ditakrifkan, pengkompil menyediakan pelaksanaan lalai:

    • Pembina Salin: Salinan asas dan pembolehubah ahli.
    • Operator Tugasan Salin: Kemas kini pembolehubah asas dan ahli.
    • Pemusnah: Memusnahkan pembolehubah asas dan ahli dalam susunan terbalik.
  • Move Constructor, Move Assignment Operator: Jika tiada yang ditakrifkan, pengkompil sekali lagi menyediakan lalai:

    • Move Constructor: Mengalihkan pembolehubah asas dan ahli.
    • Move Operator Tugasan: Menggerakkan pembolehubah asas dan ahli, mengembalikan rujukan kepada objek ini.

Kesimpulan:

Sementara pengkompil menyediakan pembina lalai tersirat, ia tidak memulakan sifar ahli data. Tingkah laku pembina adalah membina kelas asas dan pembolehubah ahli secara lalai. Tingkah laku ini, bersama-sama dengan pelaksanaan lalai untuk pembina salin/pindah dan pengendali tugasan, memastikan penciptaan dan manipulasi objek yang konsisten dalam C .

Atas ialah kandungan terperinci Adakah C Memulakan Sifar Ahli Data Secara Tersirat dalam Pembina Lalainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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