Peluasan Permulaan Dalam Kelas C 11: Memecah Halangan Rangkaian
Dalam C 03, pemulaan dalam kelas dihadkan kepada ahli const statik jenis kamiran atau penghitungan. Had ini berpunca daripada kebimbangan tentang melanggar peraturan pemaut yang memerlukan takrifan unik untuk objek.
Walau bagaimanapun, C 11 melonggarkan sekatan ini dengan ketara, membenarkan permulaan dalam kelas ahli bukan statik dan bukan const. Ini menimbulkan persoalan tentang bagaimana kemungkinan komplikasi dengan pemautan telah ditangani.
Bertentangan dengan gerak hati awal, operasi pemaut kekal sebahagian besarnya tidak berubah. Sebaliknya, pengkompil memikul tanggungjawab untuk mengendalikan pemulaan dalam kelas. Ia mencapai matlamat ini dengan memastikan bahawa hanya satu takrifan dijana untuk ahli kelas, walaupun ia dimulakan dalam kelas.
Perubahan ini memang memperkenalkan kerumitan tambahan untuk pengkompil, tetapi kesan pada pengaturcara secara amnya adalah minimum . Satu kaveat timbul apabila ahli kelas mempunyai berbilang pemula. Dalam kes sedemikian, pengkompil menentukan pemula mana yang diutamakan berdasarkan pembina khusus yang digunakan.
Sebagai contoh, pertimbangkan kelas berikut:
class X { int a = 1234; public: X() = default; X(int z) : a(z) {} };
Apabila mencipta objek menggunakan pembina lalai, nilai 'a' dimulakan kepada 1234. Walau bagaimanapun, jika pembina yang secara eksplisit menyatakan nilai untuk 'a' digunakan, in-class permulaan diabaikan.
X x{5678};
Dalam keadaan ini, nilai 'a' dalam objek 'x' ialah 5678. Tingkah laku ini memastikan ahli kelas sentiasa dimulakan kepada nilai yang paling sesuai, walaupun dengan kehadiran berbilang pemula.
Secara keseluruhannya, pengembangan keupayaan pemulaan dalam kelas dalam C 11 memberikan lebih fleksibiliti dan kemudahan untuk pengaturcara tanpa menjejaskan integriti keseluruhan proses pemautan.
Atas ialah kandungan terperinci Bagaimanakah C 11 Mengendalikan Permulaan Dalam Kelas Tanpa Konflik Penghubung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!