Rumah pembangunan bahagian belakang C++ Pautan penulisan semula fungsi dan fungsi maya: gabungan kuat pengikatan dinamik dalam warisan

Pautan penulisan semula fungsi dan fungsi maya: gabungan kuat pengikatan dinamik dalam warisan

May 04, 2024 am 11:15 AM
Fungsi menulis semula fungsi maya

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.

Pautan penulisan semula fungsi dan fungsi maya: gabungan kuat pengikatan dinamik dalam warisan

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 maya dalam kelas induk. Apabila kelas terbitan mengatasi fungsi maya, ia mencipta fungsi dengan nama dan parameter yang sama seperti fungsi dalam kelas induk. Ini memberitahu pengkompil untuk memanggil fungsi yang betul pada masa jalan berdasarkan jenis sebenar objek. 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;
}
Salin selepas log masuk

在这个例子中:

  • Animal 是父类,它定义了一个名为 speak 的虚拟函数。
  • Dog 是派生类,它重写了 speak 方法以实现不同的行为。
  • main 函数中,创建一个指向 Dog 对象的 Animal 指针。
  • 当调用 Animal 指针上的 speak 方法时,编译器将根据指向的实际 Dog 对象调用重写的 Dog::speak
Kes praktikal

Pertimbangkan contoh berikut:

Dog barking
Salin selepas log masuk
🎜Dalam contoh ini: 🎜
  • 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. 🎜
  • Dalam fungsi utama, buat penunjuk Haiwan ke objek Anjing. 🎜
  • Apabila memanggil kaedah 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!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++ Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++ Apr 19, 2024 pm 04:21 PM

Kelebihan beban fungsi membenarkan fungsi dengan nama yang sama tetapi tandatangan berbeza dalam kelas, manakala mengatasi fungsi berlaku dalam kelas terbitan apabila ia mengatasi fungsi dengan tandatangan yang sama dalam kelas asas, memberikan tingkah laku yang berbeza.

Lebih memuatkan dan menulis semula fungsi PHP Lebih memuatkan dan menulis semula fungsi PHP Apr 26, 2024 pm 05:12 PM

Kelebihan beban dan penulisan semula fungsi disokong dalam PHP untuk mencipta kod yang fleksibel dan boleh digunakan semula. Kelebihan beban fungsi: membenarkan penciptaan fungsi dengan nama yang sama tetapi parameter berbeza, dan memanggil fungsi yang paling sesuai berdasarkan padanan parameter. Penulisan semula fungsi: Benarkan subkelas mentakrifkan fungsi dengan nama yang sama dan mengatasi kaedah kelas induk Apabila kaedah subkelas dipanggil, ia akan mengatasi kaedah kelas induk.

Sejarah evolusi fungsi maya C++: mengesan asal usul dan perubahan pengaturcaraan polimorfik Sejarah evolusi fungsi maya C++: mengesan asal usul dan perubahan pengaturcaraan polimorfik Apr 28, 2024 pm 05:12 PM

Fungsi maya C++ melaksanakan pengaturcaraan polimorfik melalui penghantaran dinamik, dan evolusinya termasuk: penunjuk maya, jadual fungsi maya, penghantaran dinamik dan maklumat jenis masa jalan (RTTI). Dalam kes sebenar, tingkah laku penghantaran dinamik jenis haiwan yang berbeza ditunjukkan melalui hubungan warisan kelas haiwan dan fungsi maya speak(). Fungsi maya terus berkembang dalam C++, meningkatkan kecekapan dan fleksibiliti pengaturcaraan polimorfik dan menjadi ciri utama untuk mencapai kod yang teguh dan berskala.

Panduan Lengkap untuk Fungsi Maya C++: Dari Konsep kepada Pelaksanaan Panduan Lengkap untuk Fungsi Maya C++: Dari Konsep kepada Pelaksanaan Apr 28, 2024 pm 03:27 PM

Fungsi maya ialah mekanisme utama dalam OOP, membenarkan kelas terbitan mengatasi fungsi kelas asas dan mencapai pengikatan dinamik, membawa kelebihan kebolehskalaan, polimorfisme dan penggunaan semula kod: Konsep: Fungsi maya diisytiharkan dalam kelas asas dan ditandakan sebagai kelas Terhasil maya ; boleh mengatasi fungsi maya dan menyediakan pelaksanaannya sendiri. Pengikatan dinamik: C++ menggunakan pengikatan dinamik untuk menentukan pada masa jalan pelaksanaan fungsi maya yang hendak dipanggil. Kelebihan: Fungsi maya meningkatkan kebolehlanjutan, polimorfisme dan penggunaan semula kod, membolehkan anda membuat kelas terbitan dengan mudah dan melakukan gelagat khusus pada kejadian kelas yang berbeza.

Memahami dan menggunakan fungsi C++ membebankan dan menulis semula Memahami dan menggunakan fungsi C++ membebankan dan menulis semula Apr 20, 2024 pm 03:36 PM

Lebihan fungsi dalam C++ membolehkan fungsi dengan nama yang sama ditakrifkan dalam kelas yang sama, tetapi dengan senarai parameter yang berbeza, fungsi mengatasi berlaku apabila fungsi dengan nama dan parameter yang sama seperti kelas induk ditakrifkan dalam subkelas, dan fungsi subkelas; akan menimpa fungsi kelas induk. Dalam contoh praktikal, fungsi terlampau beban digunakan untuk melaksanakan operasi penambahan untuk jenis data yang berbeza, dan fungsi yang ditindih digunakan untuk mengatasi fungsi maya dalam kelas induk untuk mengira luas bentuk yang berbeza.

Penjelmaan polimorfisme dalam fungsi C++ membebankan dan menulis semula Penjelmaan polimorfisme dalam fungsi C++ membebankan dan menulis semula Apr 20, 2024 am 11:03 AM

Polimorfisme dalam C++: Kelebihan beban fungsi membenarkan berbilang fungsi dengan nama yang sama tetapi senarai argumen yang berbeza, dengan fungsi yang dipilih untuk dilaksanakan berdasarkan jenis argumen apabila dipanggil. Fungsi mengatasi membenarkan kelas terbitan mentakrifkan semula kaedah yang telah wujud dalam kelas asas, dengan itu mencapai jenis tingkah laku yang berbeza, bergantung pada jenis objek.

Kesan prestasi fungsi C++ membebankan dan menulis semula Kesan prestasi fungsi C++ membebankan dan menulis semula Apr 20, 2024 am 08:18 AM

Lebihan beban fungsi diselesaikan pada masa penyusunan dan tidak memberi kesan kepada prestasi penulisan semula fungsi memerlukan pengikatan dinamik pada masa jalan, yang memperkenalkan sejumlah kecil overhed prestasi.

Kepentingan penulisan semula fungsi: meningkatkan kebolehskalaan kod dan menggalakkan reka bentuk modular Kepentingan penulisan semula fungsi: meningkatkan kebolehskalaan kod dan menggalakkan reka bentuk modular May 03, 2024 pm 01:09 PM

Penulisan semula fungsi membantu meningkatkan kebolehlanjutan kod dengan mencipta versi berbeza bagi fungsi yang sama, membolehkan fungsi baharu ditambah dengan mudah dan mengelakkan pengubahsuaian kod. Ia juga menggalakkan reka bentuk modular, menggalakkan pemecahan kod kepada ketulan boleh guna semula dan mencipta fungsi khusus untuk tugasan yang berbeza, seperti menghuraikan teks dan fail JSON. Dalam amalan, penulisan semula fungsi boleh digunakan untuk melanjutkan fungsi terbina dalam, seperti fungsi print() Python dan menambah mesej awalan dan gelagat tersuai yang lain.

See all articles