Rumah > pembangunan bahagian belakang > C++ > Bolehkah Fungsi Maya Tulen dalam C Mempunyai Pelaksanaan, dan Mengapa Anda Melakukannya?

Bolehkah Fungsi Maya Tulen dalam C Mempunyai Pelaksanaan, dan Mengapa Anda Melakukannya?

Mary-Kate Olsen
Lepaskan: 2024-12-18 04:11:09
asal
716 orang telah melayarinya

Can Pure Virtual Functions in C   Have Implementations, and Why Would You Do That?

Fungsi Maya Tulen: Pelaksanaan dan Tujuan

Dalam C , fungsi maya tulen biasanya dikaitkan dengan mengisytiharkan antara muka kaedah tanpa menyediakan pelaksanaannya. Walau bagaimanapun, adalah mungkin untuk mempunyai fungsi maya tulen dengan pelaksanaan, seperti yang digambarkan di bawah:

class A {
public:
    virtual void f() = 0;
};

void A::f() {
    cout << "Test" << endl;
}
Salin selepas log masuk

Walaupun kod ini sah dari segi sintaksis, tujuan dan penggunaannya memerlukan penjelasan lanjut.

Tujuan Menyediakan Pelaksanaan untuk Fungsi Maya Tulen:

Kelas asas boleh menentukan pelaksanaan untuk fungsi maya tulen, walaupun kelas terbitan diperlukan untuk menyediakan pelaksanaannya sendiri. Tujuan pelaksanaan ini boleh:

  • Gelagat Lalai: Sediakan gelagat lalai yang boleh diwarisi oleh kelas terbitan. Walau bagaimanapun, kelas terbitan mesti secara eksplisit memanggil A::f() untuk menggunakan gelagat lalai ini.
  • Fungsi Biasa: Tentukan set fungsi biasa yang boleh digunakan semula oleh semua kelas terbitan. Dengan menyediakan pelaksanaan dalam kelas asas, kelas terbitan boleh secara pilihan memanggil fungsi biasa ini bersama-sama dengan penyesuaian mereka sendiri.

Cara Mendapat Pelaksanaan Kelas Asas:

Kelas terbitan boleh menggunakan pelaksanaan kelas asas bagi fungsi maya tulen menggunakan skop sepenuhnya name:

class B : public A {

    virtual void f() {
        // class B doesn't have anything special to do for f()
        //  so we'll call A's

        // note that A's declaration of f() would have to be public 
        //  or protected to avoid a compile time problem

        A::f();
    }

};
Salin selepas log masuk

Kes Penggunaan:

Pertimbangkan senario di mana terdapat gelagat lalai yang munasabah untuk sesuatu kaedah. Walau bagaimanapun, pereka bentuk kelas ingin tingkah laku lalai ini digunakan secara eksplisit sahaja. Menyediakan pelaksanaan untuk fungsi maya tulen dalam kelas asas membolehkan kelas terbitan mengakses dan menggunakan tingkah laku lalai ini seperti yang diperlukan.

Nota:

Walaupun secara teknikalnya mungkin untuk menyediakan pelaksanaan untuk fungsi maya tulen, ia merupakan amalan yang tidak biasa dan boleh menyebabkan kekeliruan. Oleh itu, pada umumnya disyorkan untuk mengelak daripada berbuat demikian melainkan ada sebab yang jelas dan wajar.

Atas ialah kandungan terperinci Bolehkah Fungsi Maya Tulen dalam C Mempunyai Pelaksanaan, dan Mengapa Anda Melakukannya?. 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