Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Memanggil Fungsi Maya Kelas Asas dalam C Selepas Mengatasinya?
Memanggil Fungsi Maya Kelas Asas dalam C Selepas Mengatasi
Dalam pembangunan perisian, adalah perkara biasa untuk menghadapi senario di mana anda perlu memanggil pangkalan fungsi kelas daripada kelas terbitan, walaupun anda telah mengatasi fungsi itu. Dalam C , tidak seperti Java, anda tidak boleh menggunakan sintaks super.funcname() mudah untuk mencapai ini.
Pertimbangkan coretan kod berikut:
class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here... std::cout << y << std::endl; } };
Dalam contoh ini, Bar mewarisi daripada Foo dan mengatasi fungsi printStuff(). Walau bagaimanapun, anda mungkin mahu mengekalkan fungsi asal Foo::printStuff() dalam konteks tertentu.
Untuk memanggil fungsi printStuff() kelas asas dalam C , anda mesti menamakan kelas asas secara eksplisit menggunakan :: pengendali. Begini caranya:
class Bar : public Foo { // ... void printStuff() override { // help the compiler to check Foo::printStuff(); // calls base class' function } };
Dalam kod yang diubah suai ini, fungsi kelas asas Foo::printStuff() dipanggil dalam fungsi Bar::printStuff() yang diganti. Kata kunci override membantu pengkompil mengesahkan bahawa fungsi itu sememangnya mengatasi fungsi kelas asas.
Dengan memanggil fungsi kelas asas secara eksplisit, anda memperoleh kefleksibelan untuk menggunakan kedua-dua pelaksanaan kelas asas dan terbitan printStuff(). Ini boleh berguna dalam pelbagai senario, seperti memanggil fungsi asal untuk melaksanakan tugas biasa sebelum atau selepas pelaksanaan yang ditindih.
Atas ialah kandungan terperinci Bagaimanakah Saya Memanggil Fungsi Maya Kelas Asas dalam C Selepas Mengatasinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!