Rumah >pembangunan bahagian belakang >C++ >Jenis polimorfisme - sementara, terkandung, parameter dan paksaan

Jenis polimorfisme - sementara, terkandung, parameter dan paksaan

WBOY
WBOYke hadapan
2023-09-23 10:21:041386semak imbas

多态性的类型 - 临时、包含、参数化和强制

Di sini kita akan melihat pelbagai jenis polimorfisme. Jenis ialah -

  • Ad-Hoc
  • Mengandungi
  • Parameterization
  • #🎜🎜🎜🎜🎜🎜 🎜🎜#
  • Ad-Hoc polimorfisme dipanggil terlebih muatan. Ini membolehkan fungsi dengan nama yang sama bertindak secara berbeza untuk jenis yang berbeza. Kedua-dua fungsi dan pengendali boleh dibebankan. Sesetengah bahasa tidak menyokong lebihan beban operator, tetapi lebihan fungsi adalah perkara biasa.
Contoh

#include<iostream>
using namespace std;
int add(int a, int b) {
   return a + b;
}
string add(string a, string b) {
   return a + b; //concatenate
}
int main() {
   cout << "Addition of numbers: " << add(2, 7) << endl;
   cout << "Addition of Strings: " << add("hello", "World") << endl;
}

Output

Addition of numbers: 9
Addition of Strings: helloWorld

Mengandungi polimorfisme dipanggil subtaip. Ini membolehkan penggunaan penunjuk kelas asas dan rujukan untuk menunjuk kepada kelas terbitan. Ini adalah polimorfisme masa larian. Kami tidak tahu jenis objek sebenar sebelum pelaksanaan. Kami memerlukan fungsi maya dalam C++ untuk mencapai polimorfisme kemasukan ini.

Contoh

#include<iostream>
using namespace std;
class Base {
   public:
      virtual void print() {
         cout << "This is base class." << endl;
      }
};
class Derived : public Base {
   public:
      void print() {
         cout << "This is derived class." << endl;
      }
};
int main() {
   Base *ob1;
   Base base_obj;
   Derived derived_obj;
   ob1 = &base_obj; //object of base class
   ob1->print();
   ob1 = &derived_obj; //same pointer to point derived object
   ob1->print();
}

Output

This is base class.
This is derived class.

Polimorfisme paksa dipanggil pelakon. Jenis polimorfisme ini berlaku apabila objek atau primitif ditukar kepada jenis lain. Terdapat dua jenis pemutus. Penukaran tersirat dilakukan menggunakan pengkompil itu sendiri, penukaran eksplisit dilakukan menggunakan const_cast, dynamic_cast, dsb.

Contoh

#include<iostream>
using namespace std;
class Integer {
   int val;
   public:
      Integer(int x) : val(x) {
   }
   operator int() const {
      return val;
   }
};
void display(int x) {
   cout << "Value is: " << x << endl;
}
int main() {
   Integer x = 50;
   display(100);
   display(x);
}

Output

Value is: 100
Value is: 50

polimorfisme parametrik dipanggil pengikatan awal. Jenis polimorfisme ini membenarkan penggunaan kod yang sama untuk jenis yang berbeza. Kita boleh mendapatkannya dengan menggunakan templat.

Contoh

#include<iostream>
using namespace std;
template <class T>
T maximum(T a, T b) {
   if(a > b) {
      return a;
   } else {
      return b;
   }
}
int main() {
   cout << "Max of (156, 78): " << maximum(156, 78) << endl;
   cout << "Max of (A, X): " << maximum(&#39;A&#39;, &#39;X&#39;) << endl;
}

Output

Max of (156, 78): 156
Max of (A, X): X

Atas ialah kandungan terperinci Jenis polimorfisme - sementara, terkandung, parameter dan paksaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam