Fungsi penulisan semula dan fungsi maya berfungsi bersama untuk mencapai pengikatan dinamik dalam warisan. Apabila kelas terbitan mengatasi fungsi maya kelas induk, fungsi ganti dipanggil pada masa jalan berdasarkan jenis objek sebenar, walaupun kelas induk tidak mengetahui kewujudan kelas terbitan pada masa penyusunan.
Kaitan antara fungsi mengatasi dan fungsi maya: gabungan kuat pengikatan dinamik dalam warisan
Dalam pengaturcaraan berorientasikan objek (OOP), fungsi overriding dan fungsi maya ialah dua konsep yang berkait rapat untuk melaksanakan dinamik mengikat dalam warisan. Pengikatan dinamik membenarkan rujukan kelas induk untuk menunjuk ke objek kelas terbitannya dan kaedah ganti panggilan dalam kelas terbitan, walaupun kelas induk tidak mengetahui kewujudan kelas terbitan pada masa penyusunan.
Fungsi menulis semula
Fungsi menulis semula merujuk kepada mentakrifkan fungsi dalam kelas terbitan dengan nama dan parameter yang sama seperti kelas induk. Apabila objek kelas terbitan dipanggil, kaedah ganti dalam kelas terbitan akan dipanggil, bukan kaedah dalam kelas induk. Ini membolehkan kelas terbitan mengubah suai atau melanjutkan tingkah laku dalam kelas induk.
Fungsi maya
Fungsi maya ialah fungsi yang diisytiharkan sebagai virtual
的函数。当派生类重写虚拟函数时,它建立了一个与父类中的函数具有相同名称和参数的函数。这告诉编译器在运行时根据对象的实际类型调用正确的函数。
实战案例
考虑下面这个例子:
#include <iostream> using namespace std; class Animal { public: virtual void speak() { cout << "Animal speaking" << endl; } }; class Dog : public Animal { public: void speak() override { cout << "Dog barking" << endl; } }; int main() { Animal* animal = new Dog(); // 创建 Dog 对象,但使用 Animal 指针 animal->speak(); // 调用 Dog 类的 speak() 方法 return 0; }
在这个例子中:
Animal
是父类,它定义了一个名为 speak
的虚拟函数。Dog
是派生类,它重写了 speak
方法以实现不同的行为。main
函数中,创建一个指向 Dog
对象的 Animal
指针。Animal
指针上的 speak
方法时,编译器将根据指向的实际 Dog
对象调用重写的 Dog::speak
Pertimbangkan contoh berikut:
Dog barking
Animal
ialah kelas induk, yang mentakrifkan kelas bernama speak fungsi maya. 🎜<li>
<code>Anjing
ialah kelas terbitan yang mengatasi kaedah speak
untuk mencapai gelagat yang berbeza. 🎜utama
, buat penunjuk Haiwan
ke objek Anjing
. 🎜speak
pada penunjuk Haiwan
, pengkompil akan memanggil yang diganti berdasarkan objek <code>Anjing
sebenar menunjuk kepada kaedah >Dog::speak. 🎜🎜🎜Output: 🎜rrreee🎜Mekanisme ini membolehkan kami memanggil fungsi yang diganti secara dinamik berdasarkan jenis objek sebenar, sekali gus mencapai sistem pewarisan yang fleksibel dan boleh diperluaskan. 🎜Atas ialah kandungan terperinci Pautan penulisan semula fungsi dan fungsi maya: gabungan kuat pengikatan dinamik dalam warisan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!