Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kelas Terbitan Boleh Mengatasi Fungsi Maya Tulen Peribadi dalam C?
Fungsi Maya Tulen Peribadi dalam C
Dalam C , menghadapi fungsi maya tulen peribadi seperti dalam kelas Enjin boleh membingungkan. Seperti yang dicadangkan oleh soalan, kelas terbitan dijangka menyediakan pelaksanaan untuk fungsi ini, tetapi bagaimanakah mereka boleh mengakses ahli persendirian kelas asas untuk berbuat demikian?
Walau bagaimanapun, persoalannya terletak pada salah tanggapan: Kelas terbitan sememangnya boleh mengatasi fungsi maya tulen peribadi. Mereka mungkin tidak dapat memanggilnya secara langsung, tetapi mereka boleh menyediakan pelaksanaan mereka sendiri. Ini membenarkan "pemisahan spesifikasi antara muka daripada spesifikasi gelagat boleh disesuaikan pelaksanaan." (Herb Sutter, "Virtuality")
Dalam contoh yang diberikan, antara muka awam terdiri daripada fungsi lebihan bukan maya yang memanggil fungsi maya bukan awam dan tidak lebihan. Corak ini, yang dikenali sebagai "Panggilan Awam Tanpa Beban Terlebih Maya Dilindungi Bukan Terlalu Beban," menangani isu "menyembunyikan" fungsi maya dalam kelas terbitan.
Pertimbangkan kes hipotesis di mana SetStateBool dan SetStateInt ialah fungsi maya tulen dengan antara muka bukan maya dalam kelas asas. Kelas terbitan perlu melindungi beban lampau tertentu daripada disembunyikan oleh pelaksanaan baharu. Untuk berbuat demikian, mereka perlu menggunakan pengisytiharan menggunakan.
Walau bagaimanapun, dengan menggunakan fungsi maya persendirian, kelas terbitan boleh mengatasi fungsi ini tanpa perlu risau tentang menyembunyikan kaedah lain dalam kelas asas. Ini memudahkan proses menyesuaikan gelagat fungsi maya dalam kelas terbitan.
Atas ialah kandungan terperinci Bagaimanakah Kelas Terbitan Boleh Mengatasi Fungsi Maya Tulen Peribadi dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!