Rumah >pembangunan bahagian belakang >C++ >Mengapakah Pembina Lalai Kelas Nenek Dipanggil dalam Warisan Maya?
Mengapa Pembina Lalai Dipanggil dalam Warisan Maya?
Apabila mencipta objek baharu kelas anak perempuan menggunakan warisan maya, pembina lalai bagi kelas nenek tanpa diduga dipanggil. Tingkah laku ini mungkin kelihatan berlawanan dengan intuitif, memandangkan pengguna secara eksplisit memanggil pembina kelas ibu dengan hujah.
Penjelasan:
Dalam warisan maya, pembina pangkalan maya kelas dipanggil secara langsung oleh pembina kelas paling banyak terbitan. Dalam kod yang diberikan, kelas anak perempuan ialah kelas paling banyak terbitan dan, oleh itu, ia secara langsung memanggil pembina nenek.
Memandangkan kelas anak perempuan tidak memberikan sebarang hujah kepada pembina nenek dalam senarai permulaan, nilai lalai pembina kelas nenek dipanggil secara automatik. Ini kerana, secara lalai, pengkompil menganggap bahawa pembina lalai harus digunakan apabila tiada pembina khusus digunakan.
Penyelesaian:
Untuk memanggil pembina nenek yang dikehendaki dengan hujah, senarai permulaan pembina kelas anak perempuan mesti dikemas kini secara eksplisit. Kod yang betul ialah:
daughter(int attr) : grandmother(attr), mother(attr) { ... }
Ini memastikan bahawa pembina nenek dipanggil dengan hujah yang ditentukan. Sebagai alternatif, kelas nenek boleh menyediakan pembina lalai yang menerima hujah.
Atas ialah kandungan terperinci Mengapakah Pembina Lalai Kelas Nenek Dipanggil dalam Warisan Maya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!