Rumah >pembangunan bahagian belakang >C++ >Mengapakah 'Susun Letak Standard' C 11 Memerlukan Kekangan Ahli Data yang Ketat?
C 11 memperkenalkan definisi santai untuk jenis Data Lama Biasa (POD) yang dikenali sebagai "susun atur standard." Takrifan ini menentukan kriteria ketat yang mesti dipenuhi oleh kelas untuk dianggap susun atur standard. Salah satu aspek takrifan yang mengejutkan ialah sekatannya terhadap kawalan akses ahli data, ahli data berkongsi jenis yang sama seperti kelas asas dan kehadiran berbilang ahli data dalam kelas konstituen.
Membenarkan ahli data dengan kawalan akses yang berbeza-beza akan mengganggu keperluan penting bahawa ahli pertama dan objek lengkap mempunyai alamat yang sama. Ini diperlukan untuk penukaran alamat objek reka letak standard yang sah kepada penuding kepada ahli pertamanya.
Jika yang pertama ahli data dan kelas asas berkongsi jenis yang sama, ia memperkenalkan kekaburan dalam susun atur memori. Pelaksanaan yang meletakkan kelas asas sebelum kelas terbitan memerlukan bait padding untuk mengelakkan perlanggaran alamat. Ini sekali lagi akan menghalang penukaran yang boleh dipercayai antara alamat objek dan penuding ahli pertamanya.
Dalam satu kelas, ahli diperuntukkan secara berurutan dalam susunan pengisytiharan . Walau bagaimanapun, merentas kelas, susun atur standard tidak menyatakan susunan peruntukan tetap. Mempunyai berbilang ahli data dalam kelas konstituen memperkenalkan ketidakpastian dalam menentukan ahli "pertama" dalam ingatan, yang penting untuk penukaran alamat yang disebutkan di atas.
Atas ialah kandungan terperinci Mengapakah 'Susun Letak Standard' C 11 Memerlukan Kekangan Ahli Data yang Ketat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!