Rumah > pembangunan bahagian belakang > C++ > Adakah Pembina Lalai C Memulakan Jenis Terbina Dalam?

Adakah Pembina Lalai C Memulakan Jenis Terbina Dalam?

DDD
Lepaskan: 2024-12-09 06:31:05
asal
371 orang telah melayarinya

Do C  's Default Constructors Initialize Built-in Types?

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;
};
Salin selepas log masuk

Tanpa Eksplisit Permulaan:

C c; // Compiler-provided default constructor used
// c.x contains garbage
Salin selepas log masuk

Dengan Permulaan Nilai Eksplisit:

C c = C(); // Value-initialization used
assert(c.x == 0);
Salin selepas log masuk

Dengan Permulaan Agregat:

C c = {}; // Aggregate initialization
assert(c.x == 0);
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan