Fungsi C ++ Menimpa

C Function Overriding



Dalam artikel ini, kita akan membahas fungsi utama dalam bahasa pengaturcaraan C ++. C ++ menyokong polimorfisme runtime.

Dalam fungsi penggantian, kelas anak mentakrifkan semula fungsi yang sudah ditentukan dalam kelas induknya.







Ini membolehkan pengaturcara untuk menyediakan fungsi khusus kelas yang diturunkan (walaupun ditentukan dalam kelas asas).



Sekarang, kita akan melihat beberapa contoh dan memahami konsep overriding fungsi di C ++.



Contoh-1

Saya telah menentukan dua kelas dalam contoh kod di bawah - kelas asas dan kelas turunan. Kelas asas mempunyai fungsi anggota, iaitu disp (). Derived_Class diwarisi dari Base_Class. Fungsi disp () ada di Base_Class dan kemudian ditakrifkan semula di Derived_Class.





Dalam fungsi utama (), objek Derived_Class, iaitu, d, dibuat. Kemudian, kita memanggil fungsi disp () pada objek kelas turunan, jadi fungsi di kelas turunan akan dipanggil. Versi kelas asas tidak diendahkan di sini. Anda dapat melihat di bawah output sebagai - disp () fungsi di kelas turunan.

#sertakan

menggunakan namespace std;

// kelas asas
kelas Base_Class
{
awam:
batalberjaya()
{
kos<< 'disp () berfungsi di kelas asas.' <<endl;
}

};

// kelas turunan
kelas Derived_Class:Base_Class awam
{
awam:
batalberjaya()
{
kos<< 'disp () fungsi di kelas turutan' <<endl;
}
};

intutama()
{
Berasal_Kelas d;
d.berjaya(); // disp () fungsi pada objek kelas turunan
kembali 0;
}



Contoh-2

Dalam contoh ini, kita akan melihat cara memanggil versi dasar fungsi dengan sengaja melalui objek kelas yang berasal. Dalam definisi fungsi kelas yang diperoleh, kami menggunakan operator resolusi skop [::] untuk memanggil versi kelas dasar fungsi.

#sertakan

menggunakan namespace std;

kelas Base_Class
{
awam:
batalberjaya()
{
kos<< 'disp () berfungsi di kelas asas.' <<endl;
}

};

kelas Derived_Class:Base_Class awam
{
awam:
batalberjaya()
{
Base_Class::berjaya(); // Panggil versi kelas dasar disp ()
}
};

intutama()
{
Berasal_Kelas d;
d.berjaya();
kembali 0;
}

Contoh-3

Ini adalah contoh lain dari fungsi overriding. Dalam contoh ini, kami telah membuat kelas induk - Haiwan dan dua kelas turunan - Bebek dan Anjing. Kelas asas, iaitu kelas Haiwan, mempunyai fungsi suara anggota ().

Di kelas turunan / kelas anak, iaitu, Anjing, kami telah mentakrifkan semula fungsi yang sama, iaitu suara (), untuk mengatasi definisi kelas asasnya. Begitu juga, di kelas turunan lain, iaitu Bebek, kami telah mentakrifkan semula fungsi yang sama, iaitu bunyi ().

Dalam fungsi utama (), kami telah membuat objek anjing Dog dan itik Duck. Jadi, sekarang apabila kita memanggil fungsi suara () untuk anjing dan itik, versi suara yang berasal dari kelas () akan memanggil. Anda dapat melihat output program seperti gambar di bawah. Oleh itu, dengan bantuan fungsi yang berlebihan, kita dapat menggunakan fungsi khusus kelas yang berasal.

#sertakan

menggunakan namespace std;

Haiwan kelas
{
awam:
batalsuara()
{
kos<< 'Bunyi haiwan!' <<endl;
}

};

// Kelas turunan - Kelas anjing
Anjing kelas:Haiwan awam
{
awam:
batalsuara()
{
kos<< 'Bunyi anjing - kulit kayu.' <<endl;
}
};

// Kelas turunan - Kelas itik
itik kelas:Haiwan awam
{
awam:
batalsuara()
{
kos<< 'Bunyi itik - dukun.' <<endl;
}
};


intutama()
{
Anjing anjing;
Itik itik;

anjing.suara(); // bunyi () anjing
itik.suara(); // bunyi () itik

kembali 0;
}

Kesimpulannya

Dalam artikel ini, saya telah menjelaskan fungsi utama dalam C ++ . Bahasa C ++ menyokong polimorfisme runtime. Pengalihan fungsi membantu mencapai polimorfisme jangka masa dalam C ++. Artikel ini melihat konsep fungsi overriding dan bagaimana mencapai polimorfisme runtime menggunakan fungsi overriding.