Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C 11 Membenarkan Permulaan Dalam Kelas Ahli Tidak Statik dan Tidak Tetap?

Bagaimanakah C 11 Membenarkan Permulaan Dalam Kelas Ahli Tidak Statik dan Tidak Tetap?

Patricia Arquette
Patricia Arquetteasal
2024-11-20 02:05:02826semak imbas

How Does C  11 Allow In-Class Initialization of Non-Static and Non-Constant Members?

Permulaan Dalam Kelas C 11: Sekatan Bertenang untuk Ahli Tidak Statik dan Tidak Tetap

Sebelum C 11, pemulaan dalam kelas dihadkan kepada ahli kamiran tetap statik atau jenis penghitungan. Alasan di sebalik pengehadan ini ialah keperluan untuk mengekalkan takrifan unik untuk objek merentas berbilang unit terjemahan sambil mengelakkan peraturan pemaut yang rumit.

Walau bagaimanapun, C 11 melonggarkan sekatan ini, membenarkan permulaan dalam kelas bagi ahli bukan statik (§ 12.6.2/8). Ini termasuk ahli data bukan statik dengan pemula pendakap atau-sama-sama dan kelas asas bukan maya bagi kelas bukan abstrak.

Jadi, apakah yang telah berubah untuk menjadikannya mungkin? Walaupun tiada pengubahsuaian ketara dibuat pada pemaut, pengkompil telah menjadi lebih kompleks untuk mengendalikan tanggungjawab tambahan.

Tidak seperti versi C sebelumnya, yang menguatkuasakan peraturan ketat pada berbilang definisi, pengkompil C 11 kini mengendalikan berbilang definisi dalam sebuah kelas. Daripada pemaut menyelesaikan konflik definisi, pengkompil mengambil tugas ini.

Perubahan dalam tanggungjawab ini memperkenalkan lebih kerumitan untuk pengaturcara yang kini mesti mempertimbangkan kemungkinan konflik antara pemulaan berbilang ahli untuk ahli tunggal. Sebagai contoh, kelas dengan kedua-dua pemula ahli dan pembina dengan pemula khusus untuk ahli yang sama memerlukan pertimbangan yang teliti untuk menentukan pemulaan yang akan digunakan.

Walaupun semakin kompleks, faedah pemulaan dalam kelas mengatasi cabaran. Ia membolehkan kod yang lebih ringkas dan ekspresif, mengurangkan boilerplate dan menjadikan kod lebih mudah dibaca dan difahami.

Atas ialah kandungan terperinci Bagaimanakah C 11 Membenarkan Permulaan Dalam Kelas Ahli Tidak Statik dan Tidak Tetap?. 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