Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memanggil Fungsi Maya Kelas Asas daripada Fungsi Tertimpa dalam C?

Bagaimanakah Saya Boleh Memanggil Fungsi Maya Kelas Asas daripada Fungsi Tertimpa dalam C?

Barbara Streisand
Barbara Streisandasal
2024-12-08 06:52:11184semak imbas

How Can I Call a Base Class's Virtual Function from an Overridden Function in C  ?

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!

Kenyataan:
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