Memahami Permulaan Fungsi Maya Tulen dengan '0'
Apabila mengisytiharkan fungsi maya tulen, anda mungkin perasan bahawa ia sentiasa ditugaskan kepada nilai 0:
virtual void fun() = 0;
Amalan ini menimbulkan persoalan mengapa fungsi maya tulen dimulakan dengan 0.
Andaian Salah
Pada mulanya, anda mungkin percaya bahawa nilai 0 diberikan kepada fungsi maya tulen untuk menetapkan entri vtable yang sepadan kepada NULL. Namun, andaian ini tidak betul. Nilai yang diberikan kepada fungsi maya tulen tidak semestinya menetapkan entri vtable kepada NULL.
Sebab Sebenar untuk '0'
Penggunaan sintaks =0 untuk fungsi maya tulen bermula sejak kerja awal Bjarne Stroustrup pada C . Daripada memperkenalkan kata kunci baharu seperti "tulen," dia memilih sintaks =0 kerana dia percaya kata kunci itu mempunyai peluang yang lebih baik untuk diterima oleh komuniti C pada masa itu.
Seperti yang Stroustrup sendiri nyatakan dalam bukunya, "Reka Bentuk & Evolusi C ," sintaks =0 tidak bertujuan untuk menetapkan entri vtable kepada NULL. Selain itu, menetapkan entri vtable kepada NULL bukanlah strategi pelaksanaan yang ideal untuk fungsi maya tulen.
Kesimpulan
Pengamatan fungsi maya tulen dengan 0 tidak berkaitan dengan menetapkan entri vtable kepada NULL. Sebaliknya, sintaks =0 dipilih semata-mata atas sebab kebolehbacaan dan keserasian pada peringkat awal pembangunan C.
Atas ialah kandungan terperinci Mengapakah Fungsi Maya Tulen Dimulakan dengan `0`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!