Mengapakah Argumen Lalai Fungsi Maya Menggunakan Nilai Kelas Asas?

Mary-Kate Olsen
Lepaskan: 2024-11-12 16:57:01
asal
424 orang telah melayarinya

Why Does the Default Argument of a Virtual Function Use the Base Class Value?

Gelagat Argumen Lalai Tidak Dijangka dalam Fungsi Maya: Memahami Punca Punca

Dalam coretan kod ini, anda menghadapi isu yang menarik berkaitan dengan lalai hujah fungsi maya. Walaupun menjangkakan outputnya ialah "D--data=20", anda sebaliknya memerhatikan "D--data=10". Mari kita mendalami mekanisme dalaman untuk memahami punca utama.

Dalam contoh anda, anda mempunyai dua kelas, B dan D, dengan fungsi maya bernama cetakan yang mengambil hujah lalai. Dalam kelas D, anda mengatasi fungsi cetakan dan memberikan hujah lalai yang berbeza. Apabila anda mencipta contoh D, anda mengakses fungsi cetakan melalui penuding kepada B.

Menurut piawaian C (8.3.6.10), "Panggilan fungsi maya menggunakan argumen lalai dalam pengisytiharan fungsi maya ditentukan oleh jenis statik penuding atau rujukan yang menandakan objek." Ini menunjukkan bahawa apabila memanggil fungsi maya melalui penuding ke kelas asas, ia menggunakan argumen lalai yang ditakrifkan dalam pengisytiharan kelas asas, tanpa mengira argumen lalai yang ditindih dalam kelas terbitan.

Oleh itu, apabila anda memanggil cetak melalui penunjuk bp, argumen lalai ditentukan oleh jenis statik bp, iaitu B. Akibatnya, argumen lalai B::print digunakan, menghasilkan output "D--data=10" dan bukannya "D--data=20" yang dijangkakan.

Atas ialah kandungan terperinci Mengapakah Argumen Lalai Fungsi Maya Menggunakan Nilai Kelas Asas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan