Bagaimanakah Kelas Terbitan Boleh Melaksanakan Fungsi Maya Tulen Peribadi dalam Kelas Asas?

Mary-Kate Olsen
Lepaskan: 2024-11-04 06:45:02
asal
151 orang telah melayarinya

How Can Derived Classes Implement Private Pure Virtual Functions in a Base Class?

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;    
};
Salin selepas log masuk

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 */}
};
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!