Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C++ Overloading (Operator dan Fungsi)

C++ memungkinkan Anda untuk menentukan lebih dari satu definisi untuk fungsi nama atau operator dalam lingkup yang sama, yang disebut kelebihan fungsi dan operator kelebihan beban masing-masing.

Deklarasi kelebihan beban adalah deklarasi yang dideklarasikan dengan nama yang sama dengan deklarasi yang dideklarasikan sebelumnya dalam lingkup yang sama, kecuali bahwa kedua deklarasi tersebut memiliki argumen yang berbeda dan definisi (implementasi) yang jelas berbeda.

Saat Anda memanggil fungsi yang kelebihan beban atau operator , kompiler menentukan definisi yang paling tepat untuk digunakan, dengan membandingkan tipe argumen yang telah Anda gunakan untuk memanggil fungsi atau operator dengan tipe parameter yang ditentukan dalam definisi. Proses pemilihan fungsi atau operator kelebihan beban yang paling tepat disebut resolusi kelebihan beban .

Fungsi Kelebihan Beban di C++

Anda dapat memiliki beberapa definisi untuk nama fungsi yang sama dalam lingkup yang sama. Definisi fungsi harus berbeda satu sama lain berdasarkan jenis dan/atau jumlah argumen dalam daftar argumen. Anda tidak dapat membebani deklarasi fungsi yang hanya berbeda berdasarkan tipe pengembalian.

Berikut adalah contoh di mana fungsi yang sama print() sedang digunakan untuk mencetak tipe data yang berbeda

Demo Langsung
#include <iostream>
using namespace std;
 
class printData {
   public:
      void print(int i) {
        cout << "Printing int: " << i << endl;
      }
      void print(double  f) {
        cout << "Printing float: " << f << endl;
      }
      void print(char* c) {
        cout << "Printing character: " << c << endl;
      }
};

int main(void) {
   printData pd;
 
   // Call print to print integer
   pd.print(5);
   
   // Call print to print float
   pd.print(500.263);
   
   // Call print to print character
   pd.print("Hello C++");
 
   return 0;
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Printing int: 5
Printing float: 500.263
Printing character: Hello C++

Operator Overload di C++

Anda dapat mendefinisikan ulang atau membebani sebagian besar operator bawaan yang tersedia di C++. Dengan demikian, seorang programmer juga dapat menggunakan operator dengan tipe yang ditentukan pengguna.

Operator kelebihan beban adalah fungsi dengan nama khusus:kata kunci "operator" diikuti dengan simbol untuk operator yang ditentukan. Seperti fungsi lainnya, operator yang kelebihan beban memiliki tipe kembalian dan daftar parameter.

Box operator+(const Box&);

mendeklarasikan operator penjumlahan yang dapat digunakan untuk menambah dua objek Kotak dan mengembalikan objek Kotak akhir. Kebanyakan operator yang kelebihan beban dapat didefinisikan sebagai fungsi non-anggota biasa atau sebagai fungsi anggota kelas. Jika kita mendefinisikan fungsi di atas sebagai fungsi non-anggota dari suatu kelas, maka kita harus melewatkan dua argumen untuk setiap operan sebagai berikut −

Box operator+(const Box&, const Box&);

Berikut adalah contoh untuk menunjukkan konsep operator over loading menggunakan member function. Di sini sebuah objek dilewatkan sebagai argumen yang propertinya akan diakses menggunakan objek ini, objek yang akan memanggil operator ini dapat diakses menggunakan ini operator seperti yang dijelaskan di bawah ini −

Demo Langsung
#include <iostream>
using namespace std;

class Box {
   public:
      double getVolume(void) {
         return length * breadth * height;
      }
      void setLength( double len ) {
         length = len;
      }
      void setBreadth( double bre ) {
         breadth = bre;
      }
      void setHeight( double hei ) {
         height = hei;
      }
      
      // Overload + operator to add two Box objects.
      Box operator+(const Box& b) {
         Box box;
         box.length = this->length + b.length;
         box.breadth = this->breadth + b.breadth;
         box.height = this->height + b.height;
         return box;
      }
      
   private:
      double length;      // Length of a box
      double breadth;     // Breadth of a box
      double height;      // Height of a box
};

// Main function for the program
int main() {
   Box Box1;                // Declare Box1 of type Box
   Box Box2;                // Declare Box2 of type Box
   Box Box3;                // Declare Box3 of type Box
   double volume = 0.0;     // Store the volume of a box here
 
   // box 1 specification
   Box1.setLength(6.0); 
   Box1.setBreadth(7.0); 
   Box1.setHeight(5.0);
 
   // box 2 specification
   Box2.setLength(12.0); 
   Box2.setBreadth(13.0); 
   Box2.setHeight(10.0);
 
   // volume of box 1
   volume = Box1.getVolume();
   cout << "Volume of Box1 : " << volume <<endl;
 
   // volume of box 2
   volume = Box2.getVolume();
   cout << "Volume of Box2 : " << volume <<endl;

   // Add two object as follows:
   Box3 = Box1 + Box2;

   // volume of box 3
   volume = Box3.getVolume();
   cout << "Volume of Box3 : " << volume <<endl;

   return 0;
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Volume of Box1 : 210
Volume of Box2 : 1560
Volume of Box3 : 5400

Operator Overloadable/Non-overloadable

Berikut daftar operator yang dapat kelebihan beban

+ - / %
& | ~ ! , =
> <= >= ++ --
<< >> == != && ||
+= -= /= %= ^= &=
|= *= <<= >>= [] ()
-> ->* baru baru [] hapus hapus []

Berikut adalah daftar operator yang tidak dapat di-overload

:: .* . ?:

Contoh Kelebihan Beban Operator

Berikut adalah berbagai contoh kelebihan beban operator untuk membantu Anda memahami konsep tersebut.

No.No Operator &Contoh
1 Operator Unary Kelebihan Beban
2 Operator Biner Kelebihan Beban
3 Operator Relasional Kelebihan Beban
4 Operator Input/Output Kelebihan Beban
5 ++ dan -- Operator Kelebihan Beban
6 Operator Penugasan Kelebihan Beban
7 Panggilan fungsi () Overload Operator
8 Berlangganan [] Operator Overloading
9 Operator Akses Anggota Kelas -> Kelebihan Beban

Bahasa C

  1. Melewati Array ke Fungsi dalam Pemrograman C++
  2. Kelas dan Objek C++
  3. Manajemen Memori C++:baru dan hapus
  4. C++ Warisan Publik, Dilindungi, dan Pribadi
  5. Fungsi teman C++ dan Kelas teman
  6. C Struktur dan Fungsi
  7. Kelebihan Operator Python
  8. Operator di C++ dengan Contoh:Apa itu, Jenis dan Program
  9. Operator C++ Overloading dengan Contoh
  10. Fungsi C++ dengan Contoh Program