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; }
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:
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(); } };
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!