Fungsi Overriding di C++ [Fungsi Overloading vs Overriding dengan Contoh]

Diterbitkan: 2021-05-25

Fungsi overriding di C++ adalah fitur yang memungkinkan kita untuk menggunakan fungsi di kelas anak yang sudah ada di kelas induknya. Kelas anak mewarisi semua anggota data, dan fungsi anggota hadir di kelas induk. Jika Anda ingin mengganti fungsionalitas apa pun di kelas anak, Anda dapat mengimplementasikan fungsi override. Penggantian fungsi berarti membuat versi yang lebih baru dari fungsi kelas induk di kelas anak.

Daftar isi

Fungsi C++

Sebuah fungsi C++ adalah sekelompok pernyataan yang datang bersama-sama untuk melakukan tugas. Setiap program setidaknya memiliki fungsi main() dan program tertentu dapat memiliki fungsi tambahan.

Deklarasi fungsi menyampaikan kepada kompiler nama fungsi, parameter, dan tipe kembalian. Definisi fungsi menentukan badan fungsi. Pustaka standar C++ terdiri dari banyak fungsi bawaan yang dapat dipanggil oleh program. Fungsi dapat berupa metode, prosedur, atau subrutin.

Mendefinisikan Fungsi

Sintaks umum fungsi C++ adalah:

return_type function_name(daftar parameter) {

fungsi tubuh

}

Setiap fungsi C++ terdiri dari header fungsi dan badan. Komponen dari fungsi C++ adalah:

Tipe Pengembalian – Tipe pengembalian mewakili tipe nilai pengembalian fungsi.

Nama Fungsi- Ini menunjukkan nama fungsi. Nama fungsi bersama dengan daftar parameter membentuk tanda tangan fungsi.

Parameter – Parameter adalah tempat untuk nilai yang dikembalikan oleh fungsi. Ketika suatu fungsi dipanggil, nilai dilewatkan ke parameter yang disebut parameter aktual.

Badan Fungsi- Badan fungsi merupakan daftar pernyataan yang mendefinisikan apa yang akan dilakukan fungsi.

Memanggil Fungsi

Untuk menggunakan fungsi dalam C++, Anda harus memanggil atau memanggil fungsi tersebut. Kontrol ditransfer ke fungsi, fungsi kemudian melakukan tugas yang diinginkan, dan pernyataan pengembalian mengembalikan kontrol ke program utama.

Anda harus melewati parameter yang diperlukan termasuk nama fungsi untuk memanggil suatu fungsi. Jika fungsi mengembalikan nilai, maka nilai tersebut dapat disimpan. Ada beberapa cara di mana argumen dapat diteruskan ke suatu fungsi saat memanggilnya. Jenis panggilannya adalah Call by Value, Call by Reference, dan Call by Pointer.

Mengganti Fungsi di C++

Ketika kelas turunan atau kelas anak mendefinisikan fungsi yang sudah didefinisikan di kelas dasar atau kelas induk, itu disebut fungsi overriding di C++. Penggantian fungsi membantu kami mencapai polimorfisme runtime. Ini memungkinkan pemrogram untuk melakukan implementasi spesifik dari fungsi yang sudah digunakan di kelas dasar.

Contoh:

Sumber

Pelajari contoh yang diberikan di atas. Di sini kelas induk adalah "Dasar" dan kelas anak adalah "Berasal".

Output dari program di atas akan menjadi:

Fungsi turunan

Fungsi print() dideklarasikan di kedua kelas Base dan Derived. Saat kita memanggil fungsi print() melalui objek kelas Derived, “derived1”, print() dari kelas Derived dipanggil dan dieksekusi dengan menimpa fungsi yang sama dari kelas Base.

Prinsip Kerja Fungsi Overriding

Sumber

Seperti yang Anda lihat dari gambar di atas, fungsi kelas Dasar diganti karena kami memanggil fungsi yang sama melalui objek kelas Turunan.

Jika kita memanggil fungsi print() melalui objek dari kelas Base, fungsi tersebut tidak akan ditimpa. Untuk misalnya:

//Memanggil fungsi kelas Base

Basis basis1;

base1.print(); // Keluaran: Fungsi Dasar

Output dari kode di atas akan menjadi:

Fungsi Dasar

Cara mengakses Fungsi yang Ditimpa di C++

Anda harus menggunakan operator resolusi lingkup, “::” untuk mengakses fungsi yang diganti. Cara lain untuk mengakses fungsi yang ditimpa adalah dengan menggunakan pointer dari kelas dasar untuk menunjuk ke objek dari kelas turunan dan memanggil fungsi melalui pointer.

Contoh:

Sumber

Output dari program di atas akan menjadi:

Fungsi turunan

Fungsi Dasar

Bekerja dari Akses fungsi yang diganti

Sumber

Di sini pernyataan yang diturunkan 1.print() mengakses fungsi print() dari kelas Derived dan pernyataan yang diturunkan2.Base::print() mengakses fungsi print() dari kelas Base.

Memanggil fungsi yang diganti C++ dari kelas turunan

Dalam kode ini, kami memanggil fungsi yang diganti dari dalam kelas Derived itu sendiri.

Bekerja dari panggilan fungsi yang diganti dari kelas Derived

Sumber

Perintah Base::print() memanggil fungsi yang diganti dari dalam kelas Derived.

Pelajari Kursus Rekayasa Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Fungsi Overloading vs. Fungsi Overriding

Fungsi overloading dicapai pada waktu kompilasi dan dapat dilakukan di kelas dasar dan kelas turunan. Ini membantu untuk memberikan beberapa definisi fungsi dengan mengubah tanda tangan fungsi seperti tipe data parameter atau tipe pengembalian.

Penggantian fungsi dicapai saat runtime. Dalam override, kelas dasar didefinisikan ulang di kelas turunan dengan tipe dan parameter pengembalian yang sama. Perbedaan lain antara fungsi overriding dan fungsi overloading di C++ adalah:

1. Warisan

Penggantian fungsi hanya dapat digunakan dengan pewarisan kelas sedangkan fungsi yang berlebihan tidak memerlukan pewarisan kelas.

2. Tanda Tangan Fungsi

Fungsi kelebihan beban berbeda dalam tanda tangan baik dalam jumlah parameter atau jenis parameter. Dalam penggantian fungsi, tanda tangan fungsi tetap sama.

3. Lingkup Fungsi

Fungsi yang diganti bervariasi dalam cakupannya sementara fungsi yang kelebihan beban memiliki cakupan yang sama.

4. Perilaku Fungsi

Penggantian fungsi sangat penting ketika fungsi kelas turunan harus bekerja secara berbeda atau dengan fungsionalitas tambahan daripada fungsi kelas dasar. Fungsi overloading diimplementasikan ketika fungsi dengan nama yang sama perlu memiliki perilaku yang berbeda tergantung pada parameter yang diteruskan ke mereka.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang pengembangan perangkat lunak tumpukan penuh, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Tumpukan Penuh yang dirancang untuk para profesional yang bekerja dan menawarkan 500+ jam pelatihan yang ketat, 9+ proyek, dan penugasan, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa itu fungsi override?

Fungsi mengesampingkan adalah konsep dalam pemrograman berorientasi objek yang memungkinkan fungsi dalam kelas turunan untuk menimpa fungsi di kelas dasarnya, tetapi dengan tanda tangan yang berbeda (dan biasanya dengan implementasi yang berbeda). Aspek kuncinya adalah bahwa tidak mungkin bagi kelas turunan untuk "membatalkan" perubahan pada kelas dasar, atau setidaknya tidak mungkin tanpa mengedit kelas dasar lebih lanjut. Penggunaan umum dari penggantian fungsi adalah untuk menyediakan implementasi default di kelas dasar, dan kemudian menimpa dengan implementasi khusus di kelas turunan.

Apa perbedaan antara fungsi overriding dan overloading?

Penggantian fungsi terjadi saat Anda membuat fungsi dengan nama yang sama dengan fungsi yang sudah ada di kelas dasar. Ketika ini terjadi, fungsi baru akan menggantikan fungsi yang ada dan dapat digunakan menggantikan fungsi aslinya. Overloading terjadi ketika Anda membuat fungsi dengan nama yang sama tetapi parameter yang berbeda. Ketika ini terjadi, fungsi baru akan dipanggil selain fungsi aslinya, dan kedua fungsi tersebut dapat digunakan dalam konteks apa pun tanpa masalah.

Apa itu pewarisan dalam C++?