Dalam kod yang disusun GCC, pembina untuk kelas tanpa kelas asas maya mungkin muncul pendua dalam perpustakaan penyenaraian, menimbulkan persoalan tentang sebab di sebalik tingkah laku ini. Untuk menghuraikannya, Itanium C ABI mentakrifkan satu set konvensyen penamaan untuk simbol C, termasuk pembina.
Mari kita periksa nama-nama pembina yang rosak ini:
Seperti yang anda lihat, pembina dibezakan oleh C1 (pembina objek lengkap) dan C2 (pembina objek asas ) akhiran.
Dualiti ini berpunca daripada sokongan polimorfisme, walaupun ia tidak diperlukan secara ketat dalam kes ini. Pembina objek lengkap juga memulakan kelas asas maya, manakala pembina objek asas memulakan ahli data dan kelas asas bukan maya.
Walaupun berbilang entri dalam penyenaraian perpustakaan, pembina pendua ini melakukannya tidak menyebabkan ralat "takrifan berbilang simbol __". Ini adalah kerana ABI menyediakan nama yang unik untuk setiap jenis pembina, memastikan bahawa ia dianggap sebagai simbol yang berbeza oleh pemaut.
Pancaran dwi simbol pembina dalam kod yang disusun GCC adalah hasil daripada sokongan polimorfisme dan konvensyen penamaan Itanium C ABI. Memahami konsep ini menerangkan sebab di sebalik tingkah laku ini dan menangani sebarang kebimbangan tentang pelbagai definisi.
Atas ialah kandungan terperinci Mengapakah pembina untuk kelas tanpa kelas asas maya kelihatan diduakan dalam kod yang disusun GCC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!