Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pembina Lalai Kelas Nenek Dipanggil Apabila Menghidupkan Objek Anak Perempuan Menggunakan Warisan Maya?

Mengapa Pembina Lalai Kelas Nenek Dipanggil Apabila Menghidupkan Objek Anak Perempuan Menggunakan Warisan Maya?

DDD
DDDasal
2024-11-23 07:45:21129semak imbas

Why is the Default Constructor of the Grandmother Class Invoked When Instantiating a Daughter Object Using Virtual Inheritance?

Impak Warisan Maya pada Invokasi Pembina Lalai

Apabila berurusan dengan warisan maya, memahami selok-belok seruan pembina adalah penting. Dalam kod yang disediakan, objek jenis anak perempuan dijadikan instantiated, membawa kepada seruan yang tidak dijangka bagi pembina nenek() lalai.

Aspek asas pewarisan maya ialah pembina kelas yang paling terbitan memanggil terus pangkalan maya pembina kelas. Dalam situasi ini, pembina anak perempuan memanggil pembina nenek secara terus, tanpa seruan eksplisit melalui senarai permulaan.

Memandangkan pembina eksplisit untuk nenek telah ditinggalkan dalam senarai permulaan kelas anak perempuan, pengkompil secara tersirat memanggil pembina lalai . Untuk membetulkan isu ini, nyatakan pembina yang dikehendaki secara eksplisit dalam senarai permulaan, seperti yang ditunjukkan dalam coretan kod berikut:

daughter(int attr) : grandmother(attr), mother(attr) { ... }

Pengubahsuaian ini memastikan bahawa pembina nenek yang sesuai digunakan, menyelesaikan tingkah laku awal. Tambahan pula, entri Soalan Lazim yang disediakan menawarkan pandangan tambahan tentang topik ini untuk penjelasan lanjut.

Atas ialah kandungan terperinci Mengapa Pembina Lalai Kelas Nenek Dipanggil Apabila Menghidupkan Objek Anak Perempuan Menggunakan Warisan Maya?. 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