C++ Operauntuk Kelebihan dengan Contoh
Apa itu Operauntuk Kelebihan beban?
Menggunakan operator kelebihan beban in C++, Anda dapat menentukan lebih dari satu makna untuk suatu operator dalam satu cakupan. Tujuan dari operator overloading adalah untuk menyediakan makna khusus dari suatu operator untuk tipe data yang ditentukan pengguna.
Dengan bantuan operator overloading, Anda dapat mendefinisikan ulang sebagian besar C++ operator. Anda juga dapat menggunakan operator overloading untuk melakukan operasi yang berbeda menggunakan satu operator.
Sintaksis
Untuk membebani a C++ operator, Anda harus mendefinisikan fungsi khusus di dalam Kelas sebagai berikut:
class class_name { ... .. ... public return_type operator symbol (argument(s)) { ... .. ... } ... .. ... };
Berikut penjelasan sintaks di atas:
- return_type adalah tipe kembalian untuk fungsi tersebut.
- Selanjutnya Anda menyebutkan kata kunci operator.
- Simbol tersebut menunjukkan simbol operator yang akan kelebihan beban. Misalnya +, -, <, ++.
- Argumen dapat diteruskan ke fungsi operator dengan cara yang sama seperti fungsi.
Contoh 1
#include <iostream> using namespace std; class TestClass { private: int count; public: TestClass() : count(5) {} void operator --() { count = count - 3; } void Display() { cout << "Count: " << count; } }; int main() { TestClass tc; --tc; tc.Display(); return 0; }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Menyertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Sertakan namespace std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
- Buat kelas bernama TestClass.
- Gunakan pengubah akses privat, yang menandai anggota kelas sebagai dapat diakses secara privat.
- Buat jumlah variabel integer. Variabel ini akan dapat diakses secara pribadi.
- Gunakan pengubah akses publik, yang menandai anggota kelas sebagai dapat diakses secara pribadi.
- Gunakan konstruktor kelas untuk menginisialisasi penghitung variabel ke 5.
- Membebani arti dari — operator.
- Operator akan mengurangi nilai variabel x sebesar 1.
- Akhir dari bagian kelebihan beban operator. Operator telah diberi nama baru.
- Mendefinisikan fungsi bernama fungsi Display().
- Cetak nilai jumlah variabel bersama teks lain di konsol saat fungsi Display() dipanggil. Tanda } menandai akhir dari isi fungsi Display().
- Akhir dari badan kelas.
- Panggil fungsi main(). Logika program harus ditambahkan dalam fungsi ini.
- Buat sebuah instance dari kelas TestClass dan beri nama tc.
- Ini akan memanggil fungsi operator void –().
- Gunakan pendirian Kelas TestClass untuk memanggil fungsi Display().
- Fungsi tersebut harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
Pendekatan Berbeda untuk Operauntuk kelebihan muatan masuk C++
Anda dapat melakukan kelebihan beban operator dengan menerapkan salah satu jenis fungsi berikut:
- Fungsi Anggota
- Fungsi Non-Anggota
- Fungsi Teman
- Fungsi kelebihan beban operator dapat menjadi fungsi anggota ketika operan Kiri adalah objek Kelas.
- Ketika operan Kiri berbeda, Operauntuk fungsi kelebihan beban harus berupa fungsi non-anggota.
Anda dapat menjadikan fungsi kelebihan operator sebagai fungsi teman jika perlu mengakses anggota kelas privat dan terlindungi.
Semua bisa C++ Operaapakah kelebihan beban?
Tidak. Ada C++ operator yang tidak dapat dibebani berlebih.
Mereka termasuk:
- :: -Operator resolusi ruang lingkup
- ?: -operator ternary.
- . -pemilih anggota
- Ukuran operator
- * -pemilih penunjuk anggota
Hal-hal untuk diingat
- Dengan kelebihan beban operator, Anda dapat mendefinisikan ulang cara kerja operator hanya untuk tipe yang ditentukan pengguna (objek, struktur). Anda tidak dapat menggunakannya untuk tipe bawaan (float, char, int, dll.).
- = dan & C++ operator kelebihan beban secara default. Misalnya, Anda dapat menyalin objek dari Kelas yang sama secara langsung menggunakan operator =.
- OperaPreseden tor tidak mengubah asosiatif dan preseden operator. Namun, Anda dapat mengubah urutan evaluasi menggunakan tanda kurung.
- Ada empat operator yang tidak dapat Anda kelebihan beban di C++Operator-operator tersebut meliputi operator resolusi cakupan (::), operator pemilihan anggota (.), operator pemilihan anggota melalui penunjuk ke fungsi (.*), dan operator terner (?:).
Aturan untuk Operauntuk Kelebihan beban
Berikut adalah aturan untuk Operauntuk kelebihan beban:
- Agar dapat berfungsi, setidaknya satu operan harus berupa objek kelas yang ditentukan pengguna.
- Anda hanya dapat membebani operator yang ada secara berlebihan. Anda tidak dapat membebani operator baru secara berlebihan.
- Beberapa operator tidak dapat kelebihan beban menggunakan fungsi teman. Namun, operator tersebut dapat kelebihan beban menggunakan fungsi anggota.
Cara Membebani Secara Berlebihan Operator
Contoh 1
#include <iostream> using namespace std; class OperatorOverload { private: int x; public: OperatorOverload() : x(10) {} void operator ++() { x = x + 2; } void Print() { cout << "The Count is: " << x; } }; int main() { OperatorOverload ov; ++ov; ov.Print(); return 0; }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Menyertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Sertakan namespace std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
- Buat kelas bernama OperatorKelebihan beban.
- Gunakan pengubah akses privat, yang menandai anggota kelas sebagai dapat diakses secara privat.
- Buat variabel integer x. Variabel ini akan dapat diakses secara pribadi.
- Gunakan pengubah akses publik, yang menandai anggota kelas sebagai dapat diakses secara pribadi.
- Gunakan konstruktor kelas untuk menginisialisasi variabel x ke 10.
- Membebani arti dari operator ++.
- Operator akan menaikkan nilai variabel x dengan 2.
- Akhir dari bagian kelebihan beban operator. Operator telah diberi nama baru.
- Memanggil fungsi Print().
- Cetak nilai variabel x bersama teks lain di konsol saat fungsi Print() dipanggil.
- Akhir dari isi fungsi Print().
- Akhir dari badan kelas.
- Panggil fungsi main(). Logika program harus ditambahkan dalam fungsi ini.
- Buat instance dari OperaKelas torOverload bernama ov.
- Ini akan memanggil fungsi operator void ++().
- Gunakan pendirian Operakelas torOverload untuk memanggil fungsi Print().
- Fungsi tersebut harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
Contoh 2
#include<iostream> using namespace std; class TestClass { private: int real, over; public: TestClass(int rl = 0, int ov = 0) { real = rl; over = ov; } TestClass operator + (TestClass const &obj) { TestClass result; result.real = real + obj.real; result.over = over + obj.over; return result; } void print() { cout << real << " + i" << over << endl; } }; int main() { TestClass c1(9, 5), c2(4, 3); TestClass c3 = c1 + c2; c3.print(); }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Menyertakan file header iostream ke dalam program kami untuk menggunakan fungsinya.
- Sertakan namespace std ke dalam program kita untuk menggunakan kelasnya tanpa memanggilnya.
- Buat kelas bernama TestClass. Tanda { menandai awal badan kelas.
- Gunakan pengubah akses privat untuk menandai variabel sebagai privat, artinya variabel hanya dapat diakses dari dalam Kelas.
- Tentukan dua variabel integer, real dan over.
- Gunakan pengubah akses publik untuk menandai konstruktor sebagai publik, artinya konstruktor dapat diakses bahkan di luar Kelas.
- Membuat konstruktor kelas dan menginisialisasi variabel.
- Inisialisasi nilai variabel real.
- Inisialisasi nilai variabel di atas.
- Akhir dari badan konstruktor.
- Abaikan arti dari operator +.
- Buat hasil tipe data tipe TestClass.
- Gunakan operator + dengan bilangan kompleks. Baris ini akan menambahkan bagian riil suatu bilangan ke bagian riil bilangan lain.
- Gunakan operator + dengan bilangan kompleks. Baris ini akan menambahkan bagian imajiner suatu bilangan ke bagian imajiner bilangan lain.
- Program akan mengembalikan nilai hasil variabel setelah eksekusi berhasil.
- Akhir dari definisi arti baru dari operator +, yaitu kelebihan beban.
- Panggil metode print().
- Cetak bilangan kompleks baru setelah penjumlahan pada konsol.
- Akhir dari isi fungsi print().
- Akhir dari isi Kelas TestClass.
- Memanggil fungsi main().
- Melewatkan nilai bagian riil dan kompleks yang akan ditambahkan. Bagian pertama c1 akan ditambahkan ke bagian pertama c2, yaitu 9+4. Bagian kedua c1 akan ditambahkan ke bagian kedua c, yaitu 5+3.
- Melakukan operasi menggunakan operator + yang kelebihan beban dan menyimpan hasilnya dalam variabel c3.
- Mencetak nilai variabel c3 di konsol.
- Akhir dari isi fungsi main().
Kesimpulan
- Anda dapat menentukan lebih dari satu arti untuk a C++ operator dalam satu ruang lingkup.
- Inilah yang disebut dengan kelebihan beban operator.
- OperaOverloading tor menyediakan arti khusus suatu operator untuk tipe data yang ditentukan pengguna.
- Anda dapat mendefinisikan ulang sebagian besar C++ operator melalui kelebihan beban operator.
- Tidak semua C++ operator dapat kelebihan beban.
- Agar operator dapat kelebihan beban, setidaknya salah satu operan harus berupa objek yang ditentukan pengguna.
- Hanya operator yang sudah ada yang dapat kelebihan beban. Anda tidak dapat membebani operator baru secara berlebihan.