Memanggil Fungsi Maya Kelas Asas daripada Fungsi Tertindih dalam C
Dalam pengaturcaraan berorientasikan objek, ia sering timbul apabila kelas terbitan mengatasi maya fungsi kelas asasnya. Di Java, sintaks super.funcname() boleh digunakan untuk memanggil kaedah kelas asas yang diganti. Walau bagaimanapun, dalam C , ini tidak semudah itu.
Mengatasi Fungsi Maya dalam C
Dalam C , untuk mengatasi fungsi maya dalam kelas terbitan, kata kunci timpa digunakan. Ini membantu pengkompil untuk menyemak sama ada tandatangan fungsi yang diganti sepadan dengan fungsi kelas asas. Walau bagaimanapun, tidak seperti Java, C tidak mempunyai mekanisme langsung seperti super untuk mengakses kaedah ganti kelas asas.
Memanggil Fungsi Kelas Asas daripada Kelas Terbitan
Untuk memanggil menimpa fungsi kelas asas daripada kelas terbitan, anda perlu menamakan kelas asas secara eksplisit. Ini boleh dilakukan dari dalam mana-mana kaedah kelas terbitan. Begini caranya:
class Bar : public Foo { // ... void printStuff() override { // help the compiler to check Foo::printStuff(); // calls base class' function } };
Dalam kaedah printStuff() kelas Bar, kami menggunakan Foo::printStuff() untuk memanggil fungsi kelas asas. Kata kunci override memastikan bahawa pengkompil menangkap sebarang ralat atau ketidakpadanan dalam tandatangan fungsi.
Dengan menamakan kelas asas secara eksplisit, anda boleh memastikan bahawa fungsi yang betul dipanggil, walaupun dalam senario di mana pelbagai warisan atau kerumitan lain mungkin wujud. Pendekatan eksplisit ini memberikan kejelasan dan menghalang tingkah laku yang tidak diingini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Fungsi Maya Kelas Asas daripada Fungsi Tertimpa dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!