Video: Kalkulator Phytagoras Pada Komputer | Java 2024
Sebagai landasan pagar, C ++ menyokong kedua-dua pengikat awal dan akhir. Sebarang bahasa pengaturcaraan yang diberikan dapat menyokong pengikatan awal atau lambat berdasarkan keinginan pemajunya. Bahasa yang lebih tua seperti C cenderung menyokong mengikat awal sahaja. Bahasa baru-baru ini seperti sokongan Java dan C # hanya mengikat lewat.
Anda mungkin terkejut bahawa lalai untuk C ++ adalah mengikat awal. Output program OverloadOverride seperti yang ditunjukkan adalah seperti berikut:
Kami dalam Pelajar:: CalcTuition Kami dalam Pelajar:: CalcTuition Tekan Enter untuk meneruskan …
Alasannya mudah, jika sedikit bertarikh. Pertama, C ++ perlu bertindak seperti C mungkin secara lalai untuk mengekalkan keserasian ke atas dengan pendahulunya. Kedua, polimorfisme menambah sedikit overhead untuk setiap fungsi memanggil kedua-dua dari segi penyimpanan data dan kod yang diperlukan untuk melaksanakan panggilan.
Pengasas C ++ bimbang bahawa sebarang overhead tambahan akan digunakan sebagai alasan untuk tidak mengadopsi C ++ sebagai bahasa pilihan sistem, sehingga mereka membuat awal yang lebih efisien mengikat lalai.
Untuk menjadikan fungsi ahli polimorfik, pengaturcara mesti menandakan fungsi dengan kata kunci C ++ maya, seperti yang ditunjukkan dalam pengubahsuaian berikut kepada perisytiharan dalam OverloadOveride < program: kelas Pelajar {public: virtual void calcTuition () {cout << "we are in Student:: calcTuition" << endl;}};
Kata kunci
maya yang memberitahu C ++ bahawa calcTuition () adalah fungsi anggota polimorfik. Maksudnya, mengisytiharkan kalkTuition () maya bermakna bahawa panggilan kepadanya akan terikat terlambat jika ada sebarang keraguan tentang jenis jangka masa objek yang mana calcTuition () dipanggil.
OverloadOveride dengan calcTuition () mengumumkan maya menjana output berikut: Kami dalam Pelajar:: CalcTuition Kami dalam GraduateStudent:: calcTuition Press Masukkan untuk meneruskan …
Jika anda selesa dengan penyahpepijat yang disertakan dengan persekitaran C ++ anda, anda benar-benar perlu satu langkah melalui contoh ini. Ia sangat keren untuk melihat program satu langkah ke dalam Pelajar:: calcTuition () kali pertama yang fn () dipanggil tetapi ke GraduateStudent:: calcTuition () pada panggilan kedua. Anda tidak boleh benar-benar menghargai polimorfisme sehingga anda mencuba.