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

Jenis polimorfisme - sementara, terkandung, parameter dan paksaan

WBOY
Lepaskan: 2023-09-23 10:21:04
ke hadapan
1395 orang telah melayarinya

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

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;
}
Salin selepas log masuk

Output

Addition of numbers: 9
Addition of Strings: helloWorld
Salin selepas log masuk

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();
}
Salin selepas log masuk

Output

This is base class.
This is derived class.
Salin selepas log masuk

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);
}
Salin selepas log masuk

Output

Value is: 100
Value is: 50
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output

Max of (156, 78): 156
Max of (A, X): X
Salin selepas log masuk

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

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan