Permulaan Dalam Kelas dalam C 11: Anjakan dalam Kekangan
Dalam C 11, perubahan ketara telah diperkenalkan, membenarkan dalam kelas permulaan ahli bukan statik dan bukan const. Sebelum ini, pemulaan sedemikian dihadkan kepada ahli statik dan const dengan jenis terhad.
Secara sejarah, sekatan ini berpunca daripada keperluan untuk mengelakkan berbilang takrifan dalam pengisytiharan objek, yang akan melanggar peraturan pemaut. Walau bagaimanapun, dalam C 11, pengkompil mengambil beban untuk menyelesaikan kerumitan ini, membolehkan pemulaan dalam kelas yang fleksibel.
Perubahan ini bukan sahaja menghapuskan pengehadan pada ahli statik dan const tetapi juga memperluaskan fungsi kepada bukan -ahli statik. Pembina yang tidak mewakilkan kini boleh memulakan ahli bukan statik dengan pendakap-atau-pemula-sama.
Selain itu, bahagian 9.4.2 piawai C 11 membenarkan permulaan dalam kelas ahli statik bukan const dengan penentu constexpr.
Mekanisme asas untuk anjakan ini ialah pengkompil mengendalikan potensi pertindihan definisi secara dalaman. Penyambung tidak terjejas secara langsung, kerana pengkompil memastikan bahawa hanya satu definisi sebenar wujud.
Walaupun kelonggaran ini menawarkan lebih fleksibiliti, ia telah memperkenalkan nuansa tambahan yang perlu dipertimbangkan oleh pengaturcara. Dalam kes di mana berbilang pemula ditentukan untuk ahli tunggal, peraturan yang mengawal pemula yang diutamakan ditakrifkan. Jika pembina bukan lalai memberikan nilai alternatif, ia akan mengatasi pemulaan dalam kelas.
Secara keseluruhannya, pengenalan pemula dalam kelas dalam C 11 meningkatkan kebolehbacaan kod, mengurangkan keperluan untuk kod permulaan tambahan, dan menyediakan pendekatan yang lebih konsisten untuk pembinaan objek.
Atas ialah kandungan terperinci Bagaimanakah Permulaan Dalam Kelas Mengubah Pembinaan Objek C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!