Rumah > pembangunan bahagian belakang > C++ > Aplikasi fungsi maya C++ dalam STL: mendedahkan sifat polimorfik bekas

Aplikasi fungsi maya C++ dalam STL: mendedahkan sifat polimorfik bekas

WBOY
Lepaskan: 2024-04-28 15:09:01
asal
1115 orang telah melayarinya

Bekas STL menggunakan fungsi maya untuk mencapai polimorfisme, membenarkan penunjuk kelas asas memanggil kaedah kelas terbitan. Aplikasi khusus termasuk pemusnah dan fungsi ahli operasi, seperti operator[], push_back(), dan erase(), untuk mencapai pengikatan dinamik dan penyimpanan pelbagai jenis objek.

C++ 虚拟函数在 STL 中的应用:揭秘容器的多态本质

Aplikasi fungsi maya C++ dalam STL: Mendedahkan sifat polimorfik bekas

Kata Pengantar

STL (Perpustakaan Templat Standard) ialah pustaka struktur data yang berkuasa dengan pelbagai C++ kepada kami. dan algoritma. Dalam STL, fungsi maya digunakan secara meluas untuk mencapai polimorfisme dinamik bekas. Artikel ini akan menyelidiki aplikasi fungsi maya dalam STL dan menunjukkan peranannya melalui kes praktikal.

Pengenalan kepada fungsi maya

Fungsi maya ialah ciri polimorfisme dalam C++ yang membolehkan objek kelas terbitan memanggil kaedah yang dilaksanakan masing-masing melalui penunjuk atau rujukan kelas asas. Ini bermakna objek kelas terbitan boleh berkelakuan seperti objek kelas asasnya dan dianggap sebagai objek kelas asas.

Aplikasi fungsi maya dalam STL

Bekas dalam STL, seperti vektor, senarai dan peta, semuanya menggunakan fungsi maya untuk mencapai polimorfismenya. Khususnya, mereka mengisytiharkan fungsi maya dalam pemusnah dan beberapa fungsi ahli operasi, seperti operator[], push_back(), erase(), dsb.

Kes Praktikal: Pengikat Dinamik dan Bekas Kelas Terbitan

Untuk menunjukkan peranan fungsi maya dalam STL, kami mencipta kelas asas bernama Base dan dua kelas terbitan, Derived1 dan Derived2.

class Base {
public:
  virtual ~Base() { };
  virtual void print() const { cout << "Base" << endl; };
};

class Derived1 : public Base {
public:
  virtual void print() const override { cout << "Derived1" << endl; };
};

class Derived2 : public Base {
public:
  virtual void print() const override { cout << "Derived2" << endl; };
};
Salin selepas log masuk

Seterusnya, kami mencipta vektor dan menambah objek Base, Derived1 dan Derived2 padanya.

vector<Base*> vec;
vec.push_back(new Base());
vec.push_back(new Derived1());
vec.push_back(new Derived2());
Salin selepas log masuk

Sekarang, mari kita ulangi melalui vektor dan panggil kaedah print() setiap objek. Disebabkan penggunaan pengikatan dinamik, penunjuk kelas asas secara automatik boleh memanggil kaedah objek kelas terbitan untuk mencetak jenis objek dalam cara polimorfik.

for (Base* obj : vec) {
  obj->print();
}
Salin selepas log masuk

Output:

Base
Derived1
Derived2
Salin selepas log masuk

Seperti yang anda lihat daripada output, kaedah print() dipanggil dengan betul dan jenis kelas terbitan dicetak. Ini menunjukkan cara fungsi maya melaksanakan polimorfisme kontena dalam STL.

Kesimpulan

Fungsi maya ialah mekanisme utama untuk mencapai polimorfisme kontena dalam STL. Bekas STL boleh menyimpan dan memanipulasi objek daripada jenis yang berbeza secara dinamik dengan membenarkan penunjuk kelas asas memanggil kaedah kelas terbitan. Polimorfisme ini menjadikan STL sangat berkuasa dalam membangunkan kod berskala dan boleh diselenggara.

Atas ialah kandungan terperinci Aplikasi fungsi maya C++ dalam STL: mendedahkan sifat polimorfik bekas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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