Adakah Pembina Lalai Tersirat Memulakan Jenis Terbina Dalam?
Walaupun pembina lalai yang dijana pengkompil bertanggungjawab untuk memulakan ahli kelas, peraturan ini tidak terpakai kepada jenis terbina dalam. Pembina lalai tersirat membiarkan ahli jenis terbina dalam tidak dimulakan.
Walau bagaimanapun, terdapat mekanisme alternatif untuk memulakan tika kelas.
Permulaan Nilai
Sintaks C() mungkin kelihatan menggunakan pembina lalai, tetapi pada hakikatnya, ia melakukan permulaan nilai, yang:
Contoh:
class C { public: int x; }; C c; // Compiler-generated default constructor used, x retains garbage
Permulaan Eksplisit
Pemula () eksplisit secara eksplisit mencetuskan permulaan nilai untuk kedua-dua jenis terbina dalam dan diisytiharkan pengguna pembina.
C c = C(); // Value initialization used, x is zero-initialized C *pc = new C(); // Value initialization used, pc->x is zero-initialized
Permulaan Agregat
Pemulaan agregat juga memulakan kejadian kelas tanpa melibatkan pembina.
C c = {}; // x is zero-initialized C d{}; // C++11 aggregate initialization, x is zero-initialized
Atas ialah kandungan terperinci Adakah C Secara Tersirat Memulakan Jenis Terbina dalam dalam Pembina Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!