Bagaimana Melaksanakan Fungsi Maya di C ++?



Artikel ini akan memperkenalkan anda kepada konsep pengaturcaraan yang lain iaitu Fungsi Maya di C ++. Konsep ini akan disokong oleh demonstrasi.

Fungsi maya di C ++ adalah fungsi ahli dalam kelas asas yang kita mentakrifkan semula dalam kelas turunan. Artikel ini akan membantu anda meneroka konsep secara terperinci. Petunjuk berikut akan dibahas dalam artikel ini,

Oleh itu, mari kita mulakan artikel ini mengenai Fungsi Maya di C ++





Apakah Fungsi Maya?

Fungsi maya adalah fungsi anggota dalam kelas asas yang kita mentakrifkan semula dalam kelas turunan. Ia dinyatakan menggunakan kata kunci maya. Apabila kelas yang mengandungi fungsi maya diwarisi, kelas yang diturunkan mentakrifkan semula fungsi maya agar sesuai dengan keperluannya sendiri.

Teruskan dengan artikel ini mengenai Fungsi Maya di C ++



Peraturan untuk Fungsi Maya di C ++:

  • Mereka selalu didefinisikan dalam kelas asas dan diganti dalam kelas turutan tetapi tidak wajib untuk mengatasi kelas turunan.
  • Fungsi maya mesti dinyatakan di bahagian awam kelas.
  • Mereka tidak boleh statik atau fungsi rakan juga tidak boleh menjadi fungsi maya kelas lain.
  • Fungsi maya harus diakses menggunakan penunjuk untuk mencapai polimorfisme jangka masa.

Teruskan dengan artikel ini mengenai Fungsi Maya di C ++.

Apa yang mengikat?

Mengikat fungsi bermaksud bahawa di mana sahaja terdapat fungsi panggilan, penyusun perlu mengetahui definisi fungsi mana yang sesuai. Ini bergantung pada tandatangan setiap deklarasi fungsi & tugas yang diambil. Juga, penyusun perlu mengetahui bahawa apabila pemadanan antara fungsi panggilan dan memilih definisi yang betul akan berlaku.

Teruskan dengan artikel ini mengenai Fungsi Maya di C ++



Mengikat Awal

Pengikatan awal adalah fenomena di mana keputusan untuk memadankan pelbagai panggilan fungsi berlaku pada waktu penyusunan itu sendiri dan penyusun secara langsung mengaitkan pautan dengan alamat. Ia juga dikenali sebagai Batic Static atau Compile-time Binding.

  • Seperti yang kita ketahui, kita menulis kod dalam bahasa tahap tinggi
  • Kemudian penyusun mengubahnya menjadi bahasa tahap rendah yang dapat difahami oleh komputer, kebanyakannya bahasa mesin pada masa penyusunan
  • Pada awal mengikat, penyusun secara langsung memberikan alamat arahan deklarasi fungsi ke arahan panggilan fungsi
  • Oleh itu seperti namanya pengikatan berlaku sangat awal sebelum program dijalankan.

Contohnya

#sertakan dengan menggunakan ruang nama kelas std Haiwan {awam: suara batal () {cout<< 'Genric animal sound' << endl } } class Cats: public Animals { public: void sound() { cout << 'Cat meow' <bunyi () // kembali mengikat awal 0}

Pengeluaran

Output- Fungsi maya di C ++ - Edureka

penjelasan ion
Dalam contoh ini, kami membuat penunjuk a kepada Haiwan kelas induk. Kemudian dengan menulis a = & c, penunjuk ‘a’ mula merujuk pada objek c kelas Kucing.
a -> suara () - Ketika memanggil fungsi fungsi () yang terdapat di kedua kelas oleh penunjuk 'a', fungsi kelas induk dipanggil, walaupun penunjuk merujuk pada objek kelas Kucing .

Ini disebabkan oleh Early Binding. Kami tahu bahawa ‘a’ adalah penunjuk kelas induk yang merujuk kepada objek kelas anak. Oleh kerana pengikatan awal berlaku pada waktu kompilasi, oleh itu ketika penyusun melihat bahawa 'a' adalah penunjuk kelas induk, ia memadankan panggilan dengan fungsi 'suara ()' kelas induk tanpa mencari objek penunjuk itu adalah merujuk kepada.

Teruskan dengan artikel ini mengenai Fungsi Maya di C ++

Mengikat Lewat

Pada pengikatan lewat, penyusun mengenal pasti objek pada waktu runtime dan kemudian memadankan fungsi panggilan dengan fungsi yang betul. Ia juga dikenali sebagai Dynamic Binding atau Runtime Binding.

Pengikatan lewat dalam masalah di atas dapat diselesaikan dengan menggunakan kata kunci maya di kelas asas. Mari lihat bagaimana ini berlaku dengan menggunakan contoh di atas sendiri, tetapi hanya menambahkan kata kunci maya.

Contohnya

#sertakan dengan menggunakan ruang nama kelas std Haiwan {awam: suara kosong maya () {cout<< 'Genric aniaml sound' << endl } } class Cats: public Animals { public: void sound() { cout << 'Cats meow' <bunyi () kembali 0}

Pengeluaran

Penjelasan
Di sini bunyi fungsi () dari kelas asas dibuat secara maya, oleh itu penyusun sekarang melakukan pengikatan lewat untuk fungsi ini. Sekarang, fungsi panggilan fungsi suara () akan dipadankan dengan definisi fungsi pada waktu runtime. Oleh kerana penyusun sekarang mengenal pasti penunjuk 'a' sebagai merujuk kepada objek 'c' dari Kucing kelas yang diturunkan, ia akan memanggil fungsi () fungsi Kucing kelas.

Teruskan dengan artikel ini mengenai Fungsi Maya di C ++

Fungsi Maya Tulen

Fungsi maya murni di C ++ adalah fungsi maya yang kita tidak mempunyai pelaksanaannya, kita hanya menyatakannya. Fungsi maya murni dinyatakan dengan memberikan 0 dalam deklarasi.

bunyi kekosongan maya () = 0

Di sini bunyi () adalah maya murni.

Teruskan dengan artikel ini mengenai Fungsi Maya di C ++

c ++ pergi ke

Kelas Abstrak

Kelas abstrak ditakrifkan sebagai kelas dengan satu atau lebih fungsi maya murni. Seperti yang dijelaskan di atas, fungsi maya murni adalah fungsi anggota maya yang ditandai sebagai tidak mempunyai pelaksanaan. Ini tidak mungkin dilaksanakan dengan maklumat yang diberikan di kelas, termasuk kelas asas. Kelas abstrak juga dikenali sebagai kelas asas abstrak.

Contohnya

#sertakan dengan menggunakan namespace std class Employee // abstract base class {virtual int getSalary () = 0 // pure virtual function} class Employee_1: public Employee {int gaji public: Employee_1 (int s) {gaji = s} int getSalary () {gaji balik}} kelas Pekerja_2: awam Pekerja {int gaji awam: Pekerja_2 (int t) {gaji = t} int getSalary () {gaji balik}} int utama () {Pekerja_1 e1 (5000) Pekerja_2 e2 (3000) int a, ba = e1.getSalary () b = e2.getSalary () cout<< 'Salary of Developer : ' << a << endl cout << 'Salary of Driver : ' << b << endl return 0 } 

Pengeluaran

Penjelasan
Fungsi ‘getSalary ()’ di kelas Karyawan adalah fungsi murni murni. Oleh kerana kelas Pekerja mengandungi fungsi maya yang murni, oleh itu kelas dasar abstrak.
Oleh kerana fungsi maya murni didefinisikan dalam subkelas, oleh itu fungsi 'getSalary ()' ditakrifkan dalam kedua-dua subkelas kelas Karyawan iaitu di Karyawan_1 dan Karyawan_2.

Teruskan dengan artikel ini mengenai Fungsi Maya di C ++

Contoh untuk Fungsi Maya

#sertakan dengan menggunakan ruang nama pangkalan kelas std {public: void function_1 () {cout<< 'base class function 1n' } virtual void function_2() { cout << 'base class function 2n' } virtual void function_3() { cout << 'base class function 3n' } virtual void function_4() { cout << 'base class function 4n' } } class derived : public base { public: void function_1() { cout << 'derived class function 1n' } void function_2() { cout << 'derived class function 2n' } void function_4(int x) { cout function_2 () ptr-> function_3 () ptr-> function_4 ()}

Pengeluaran

Penjelasan
Untuk fungsi function_1 (), fungsi kelas kelas dasar dipanggil, fungsi_2 () diganti dalam kelas turutan sehingga versi kelas turutan disebut, fungsi_3 () tidak diganti dalam kelas turunan dan fungsi maya sehingga versi kelas dasar disebut, fungsi_4 () tidak diganti sehingga versi kelas asas dipanggil.

Oleh itu, kita telah mengakhiri artikel ini mengenai ‘Fungsi Maya di C ++’. Sekiranya anda ingin mengetahui lebih lanjut, lihat di oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Sila sebutkan di bahagian komen blog ini dan kami akan menghubungi anda secepat mungkin.