Rumah >pembangunan bahagian belakang >C++ >Adakah Pembina Lalai C Memulakan Jenis Terbina Dalam?
Adakah Jenis Terbina Dalam Dimulakan oleh Pembina Lalai C?
Dalam C , pembina lalai tersirat yang dijana oleh pengkompil ialah bertanggungjawab untuk memulakan ahli kelas. Walau bagaimanapun, terdapat salah tanggapan umum bahawa tingkah laku ini meluas kepada jenis terbina dalam.
Gelagat Permulaan Lalai
Pembina lalai tersirat tidak tidak memulakan ahli jenis terbina dalam. Apabila pembina sedemikian digunakan tanpa permulaan yang ditentukan pengguna, ahli jenis terbina dalam kekal tidak dimulakan.
Pengecualian kepada Peraturan
Walaupun pembina lalai biasanya tidak memulakan jenis terbina dalam, terdapat keadaan tertentu di mana permulaan mungkin berlaku:
Permulaan Nilai:
Dalam C 03 dan kemudian, sintaks C() memanggil permulaan nilai untuk kejadian kelas. Jika kelas tidak mempunyai pembina yang diisytiharkan pengguna, permulaan nilai akan memulakan sifar ahli jenis terbina dalam.
Permulaan Agregat:
Sintaks permulaan agregat, seperti C c = {}, melakukan pemula tanpa menggunakan pembina. Ini menghasilkan permulaan sifar ahli jenis terbina dalam.
Contoh:
Pertimbangkan kelas berikut tanpa pembina yang diisytiharkan pengguna:
class C { public: int x; };
Tanpa Eksplisit Permulaan:
C c; // Compiler-provided default constructor used // c.x contains garbage
Dengan Permulaan Nilai Eksplisit:
C c = C(); // Value-initialization used assert(c.x == 0);
Dengan Permulaan Agregat:
C c = {}; // Aggregate initialization assert(c.x == 0);
Adalah penting untuk ambil perhatian bahawa tingkah laku yang diterangkan di atas mungkin berbeza bergantung pada versi C yang digunakan dan definisi kelas khusus.
Atas ialah kandungan terperinci Adakah Pembina Lalai C Memulakan Jenis Terbina Dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!