Bagaimana Melaksanakan Overloading Operator di c ++?



Dalam artikel ini kita akan melihat konsep berorientasikan objek lain yang memudahkan pengendalian pengendali. Kami akan belajar Overloading Operator di C ++.

Dalam artikel ini kita akan meneroka satu lagi konsep berorientasikan objek yang memudahkan pengendalian pengendali. Itulah kita akan memperincikan maklumat mengenai Operator Beban berlebihan dalam C ++ . Petunjuk berikut akan dibahas dalam artikel ini,

Oleh itu, mari kita mulakan dengan artikel ini mengenai Beban Operator di C ++.





Beban berlebihan dalam C ++

Sekiranya kita membuat dua atau lebih ahli dari kelas yang sama yang mempunyai nama yang sama tetapi berbeza dalam jumlah atau jenis parameter, ia dikenali sebagai kelebihan beban C ++.



Di C ++, kita boleh memuatkan lebih banyak:

  • kaedah
  • pembina
  • sifat terindeks

Ini kerana ahli-ahli ini hanya mempunyai parameter.

Teruskan dengan artikel ini mengenai Pengendalian Kelebihan Operator di C ++.



Jenis beban berlebihan di C ++

  • Fungsi berlebihan
  • Pengendalian berlebihan

Overloading - Operator Overloading di C ++ - Edureka

Teruskan dengan artikel ini mengenai Pengendalian Kelebihan Operator di C ++.

Mengapa beban berlebihan operator digunakan?

Program C ++ boleh ditulis tanpa pengetahuan operator yang berlebihan. Begitu juga, pengendali operasi sangat digunakan oleh pengaturcara untuk menjadikan program ini intuitif. Sebagai contoh,

Kita boleh menggantikan kod seperti:

pengiraan = tambah (membahagi (a, b), darab (a, b))

Untuk persamaan

pengiraan = (a / b) + (a * b)

Overloading operator memberikan cara yang mudah dan senang untuk pengembangan definisi baru bagi kebanyakan operator di C ++. Dengan pengetahuan yang mencukupi, kita hampir dapat membuat bahasa baru kita sendiri dengan penggunaan kreatif fungsi dan teknik pembebanan operator. Kami boleh membebani semua operator di C ++ kecuali yang berikut:
● Pengendali skop (: :)
● Pengendali saiz (Sizeof)
● pemilih ahli (.)
● pemilih penunjuk ahli (*)
● pengendali ternary (? :)

tutorial reka bentuk ui studio android

Sintaks Pembebanan Operator

return_type class_name:: operator op (argument_list) {// fungsi badan}

Di mana jenis pengembalian adalah jenis nilai yang dikembalikan oleh fungsi. class_name adalah nama kelas.

Teruskan dengan artikel ini mengenai Pengendalian Kelebihan Operator di C ++.

Melaksanakan Overloading Operator di C ++

Fungsi pengendali mestilah tidak statik (fungsi anggota) atau fungsi rakan untuk mendapat kelebihan beban. Fungsi overloading operator dapat diterapkan pada fungsi anggota jika operan kiri adalah objek dari kelas itu, tetapi jika operan Kiri berbeza, maka fungsi overloading Operator mesti didefinisikan sebagai fungsi bukan anggota.
Fungsi overloading operator boleh dijadikan fungsi rakan sekiranya memerlukan akses kepada anggota kelas yang dilindungi secara peribadi dan terlindung. Sebagai contoh, op operator adalah fungsi operator di mana op adalah operator yang berlebihan, dan operator adalah kata kunci. Overloading operator dapat dicapai dengan melaksanakan fungsi yang dapat berupa fungsi anggota, fungsi bukan anggota atau fungsi teman.

Apakah perbezaan antara fungsi operator dan fungsi normal?

Fungsi operator sama seperti fungsi biasa. Satu-satunya perbezaan adalah, nama fungsi operator selalu kata kunci operator diikuti dengan simbol operator dan fungsi operator dipanggil ketika operator yang sesuai digunakan.

Teruskan dengan artikel ini mengenai Pengendalian Kelebihan Operator di C ++.

Jenis pendekatan overloading

Overloading operator dapat dilakukan dengan menggunakan tiga pendekatan, yaitu

  • Pengendali yang terlalu banyak memuatkan.
  • Pengendali binari yang berlebihan.
  • Pengendali binari yang berlebihan menggunakan fungsi rakan.

Teruskan dengan artikel ini mengenai Pengendalian Kelebihan Operator di C ++.

Pengendali Unary yang terlalu banyak

Mari kita pertimbangkan pengendali ‘-’ yang tidak biasa. Pengendali tolak apabila digunakan sebagai tidak tetap memerlukan hanya satu operasi. Kami tahu bahawa pengendali ini mengubah tanda operasi apabila digunakan pada pemboleh ubah data asas. Mari kita lihat bagaimana membebankan operator ini sehingga dapat digunakan pada objek dengan cara yang sama seperti yang diterapkan pada pemboleh ubah int atau float. Tanda minus, bila diterapkan pada objek, harus mengurangi setiap item datanya.

Contoh:

#masuk menggunakan ruang nama kelas std Tinggi {awam: // Objek Anggota int kaki, inci // Konstruktor untuk menginisialisasi nilai objek Tinggi (int f, int i) {kaki = f inci = i} // Pengendali berlebihan (-) untuk melakukan pengurangan // operasi operator ketinggian objek tinggi- () {kaki-- inci-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Pengeluaran:

Penjelasan:
Dalam contoh di atas, kami membebankan pengendali unary untuk melakukan penurunan dalam dua pemboleh ubah kelas Tinggi. Kami menyampaikan dua parameter kepada pembina dan menyimpan nilai dalam pemboleh ubah kaki dan inci. Kemudian kita tentukan fungsi operator yang berlebihan (void operator- ()
) di mana dua pemboleh ubah dikurangkan oleh satu kedudukan.
Semasa kita menulis -h1, ia memanggil fungsi operator yang berlebihan dan menurunkan nilai yang diteruskan ke pembina.

Teruskan dengan artikel ini mengenai Pengendalian Kelebihan Operator di C ++.

Pengendali Binari yang berlebihan

Ini adalah beban operator yang berlebihan pada dua operasi. Mari kita ambil contoh yang sama dari kelas Height, tetapi kali ini, tambahkan dua objek Tinggi h1 dan h2.

Contoh:

#sertakan dengan menggunakan ruang nama kelas std Tinggi {awam: int kaki, inci Tinggi () {kaki = 0 inci = 0} Tinggi (int f, int i) {kaki = f inci = i} // Pengendali berlebihan (+) untuk melakukan penambahan // objek dua jarak menggunakan operator binari Pengendali tinggi + (Tinggi & d2) // Panggil dengan rujukan {// Buat objek untuk mengembalikan Tinggi h3 // Lakukan penambahan kaki dan inci h3.feet = kaki + d2.feet h3. inci = inci + d2.inch // Kembalikan objek yang dihasilkan kembali h3}} int utama () {Tinggi h1 (3, 7) Tinggi h2 (6, 1) Tinggi h3 // Gunakan operator yang berlebihan h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Pengeluaran:

corak reka bentuk mvc di java

Penjelasan:
Pengendali tinggi + (Tinggi & h2), di sini pengembalian_jenis fungsi adalah ketinggian kelas sehingga mengembalikan objek h3 dari kelas Tinggi. Dalam baris h3 = h1 + h2, h1 memanggil fungsi operator objek kelasnya dan mengambil h2 sebagai parameter, maka kami menerapkan h3.feet = kaki + d2.feet dan h3.inch = inci + d2.inch yang menyimpan jumlah nilai pemboleh ubah kaki dan inci dalam pemboleh ubah yang berkaitan dengan objek h3.
Apabila pernyataan ‘h3 = h1 + h2’ memanggil fungsi operator yang berlebihan, objek h1 mengambil tanggungjawab memanggil fungsi dan h2 memainkan peranan argumen yang diteruskan ke fungsi. Pernyataan pemanggilan di atas bersamaan dengan h3 = h1. operator + (h2) oleh itu anggota data h2 diakses secara langsung dan anggota data h2 (yang disampaikan sebagai argumen) diakses menggunakan operator titik.

Peraturan untuk Beban Pengendali

  • Hanya operator yang ada yang boleh kelebihan beban dan operator baru tidak boleh berlebihan
  • Pengendali yang berlebihan harus mengandungi sekurang-kurangnya satu operasi jenis data yang ditentukan pengguna.
  • Kami tidak menggunakan fungsi rakan untuk membebani operator tertentu. Walau bagaimanapun, fungsi anggota boleh digunakan untuk membebankan operator tersebut.
  • Apabila pengendali yang tidak aktif dimuatkan melalui fungsi anggota, mereka tidak menggunakan argumen yang jelas, tetapi, jika mereka berlebihan oleh fungsi rakan, mereka mengambil satu argumen.
  • Apabila pengendali binari berlebihan melalui fungsi anggota mereka mengambil satu argumen eksplisit, dan jika mereka berlebihan melalui fungsi rakan, mereka mengambil dua argumen eksplisit.

Oleh itu, kita telah mengakhiri artikel ini mengenai ‘Operator Berlebihan dalam C ++’. Sekiranya anda ingin mempelajari lebih lanjut, lihat Java Training oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai. Edureka's kursus 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.