Fungsi maya adalah fungsi anggota yang ditakrifkan dalam kelas asas / kelas induk dan ditakrifkan semula pada kelas turunan. Fungsi maya membolehkan memanggil versi kelas fungsi yang diturunkan menggunakan rujukan atau penunjuk ke kelas asas.
Mari kita lihat beberapa contoh untuk memahami konsep fungsi maya.
Pada contoh pertama, kita akan melihat tingkah laku fungsi bukan maya, dan kemudian pada contoh kedua, kita akan menerangkan tingkah laku fungsi maya.
Contoh 1
Dalam kod contoh berikut, kami mempunyai dua kelas: kelas asas dan kelas turunan.
Kelas asas mempunyai fungsi anggota, i.e., paparan (). Kelas yang diturunkan diwarisi dari kelas asas dan mentakrifkan semula fungsi paparan ().
Kemudian, kami telah menyatakan penunjuk kepada jenis kelas asas dan memberikan objek dari kelas yang berasal. Jadi, apabila kita memanggil fungsi display () menggunakan penunjuk jenis kelas asas, fungsi kelas asas akan dipanggil. Anda dapat melihat output di bawah.
Tetapi, dalam kes seperti itu, C ++ menyediakan cara untuk memanggil fungsi kelas turunan dengan menyatakan fungsi kelas dasar sebagai maya. Kami akan melihat contoh lain untuk memahami perkara ini.
#sertakanmenggunakan ruang nama std;
kelas Base_Class
awam:
paparan kosong ()
cout << "I am in Base class" << endl;
;
kelas Derived_Class: public Base_Class
awam:
paparan kosong ()
cout << "I am in Derived class"
Contoh 2
Dalam contoh ini, kami telah menentukan fungsi display () sebagai fungsi maya di kelas asas. Satu-satunya perbezaan dari program sebelumnya ialah kita telah menambahkan kata kunci maya di hadapan “void display ()” di kelas asas.
Sekarang, jika anda melihat outputnya, ia mencetak, "Saya berada di kelas turunan", yang menunjukkan bahawa fungsi kelas yang berasal disebut.
Kata kunci maya (fungsi maya) dalam kelas asas bertanggungjawab untuk memastikan bahawa fungsi yang betul dipanggil untuk objek.
#sertakanmenggunakan ruang nama std;
kelas Base_Class
awam:
paparan kekosongan maya ()
cout << "I am in Base class" << endl;
;
kelas Derived_Class: public Base_Class
awam:
paparan kosong ()
cout << "I am in Derived class"
Contoh 3
Ini adalah satu lagi contoh fungsi maya. Seperti yang anda lihat dalam program di bawah ini, kami telah menentukan kelas asas, i.e., Haiwan. Terdapat dua kelas yang diturunkan: Anjing dan Lembu. Kami telah menentukan fungsi makan () sebagai maya di kelas asas, i.e., Haiwan. Kami kemudian telah mentakrifkan semula fungsi makan () di kedua-dua kelas yang berasal, Anjing dan Lembu. Dalam fungsi utama (), kita mempunyai penunjuk kelas asas, i.e., Haiwan, dan kemudian melampirkan kelas yang berasal, Anjing. Oleh itu, apabila kita memanggil fungsi makan () menggunakan penunjuk kelas asas, kita boleh memanggil fungsi kelas makan ().e., fungsi makan () dari kelas Anjing. Begitu juga, ketika kita melampirkan objek kelas Lembu, kita kemudian dapat memanggil versi kelas turunan fungsi makan (), i.e., fungsi makan () dari kelas Lembu. Anda dapat melihat tingkah laku ini dengan jelas dalam output di bawah.
#sertakanmenggunakan ruang nama std;
Haiwan kelas
awam:
kekosongan maya makan ()
cout << "Animal - base class - undefined eating behavior." << endl;
;
anjing kelas: Haiwan awam
awam:
batal makan ()
cout << "Dog - eat non-veg!" << endl;
;
kelas Lembu: Haiwan awam
awam:
batal makan ()
cout << "Cow - eat veg!"
a_ptr-> makan ();
pulangan 0;
Kesimpulannya
Dalam artikel ini, saya telah menerangkan konsep fungsi maya di C++. C ++ menyokong pelbagai jenis polimorfisme - polimorfisme statik dan polimorfisme dinamik. Dengan bantuan fungsi maya, kita dapat mencapai polimorfisme runtime / dinamik. Dalam artikel ini, kami hanya melihat konsep fungsi maya dan bagaimana mencapai polimorfisme runtime. Saya telah menerangkan tiga contoh kerja untuk menerangkan fungsi maya.