Rumah >pembangunan bahagian belakang >C++ >Mengapakah Fungsi Maya Tulen Dimulakan dengan `0`?

Mengapakah Fungsi Maya Tulen Dimulakan dengan `0`?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 14:32:09125semak imbas

Why are Pure Virtual Functions Initialized with `0`?

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!

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