Fungsi Maya Tulen dalam Skop Peribadi
Apabila menghadapi kod dengan fungsi maya tulen peribadi dalam kelas asas, seperti dalam contoh yang disediakan :
class Engine { public: void SetState( int var, bool val ); void SetState( int var, int val ); private: virtual void SetStateBool( int var, bool val ) = 0; virtual void SetStateInt ( int var, int val ) = 0; };
nampaknya kelas terbitan tidak boleh mengakses fungsi ini untuk melaksanakannya. Walau bagaimanapun, kelas terbitan boleh mengatasi fungsi maya peribadi, menyediakan pelaksanaannya sendiri. Ini tidak boleh dikelirukan dengan ketidakupayaan kaedah kelas terbitan untuk memanggil fungsi maya daripada kelas asas.
Pemisahan Antara Muka dan Pelaksanaan
Fungsi maya peribadi membenarkan pemisahan spesifikasi antara muka daripada pelaksanaan yang boleh disesuaikan dalam kelas terbitan. Antara muka awam terdiri daripada satu set fungsi bukan maya terlampau beban yang memanggil fungsi maya peribadi tanpa beban. Simpulan bahasa ini, yang dikenali sebagai "Panggilan Awam Bukan Beban Maya Terpelihara Tanpa Beban Maya", membantu mengurus peraturan persembunyian.
Mencegah Penyembunyian
Dalam senario di mana antara muka awam bukan maya dan pelaksanaan maya adalah peribadi, pengarang kelas terbitan hanya boleh menyediakan pelaksanaan fungsi maya mereka sendiri tanpa perlu risau tentang menyembunyikan ahli kelas asas. Contohnya:
class MyTurbochargedV8 : public Engine { private: void SetStateInt(int var, int val ) {/* new implementation */} };
Atas ialah kandungan terperinci Bagaimanakah Kelas Terbitan Boleh Melaksanakan Fungsi Maya Tulen Peribadi dalam Kelas Asas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!