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.
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; }; };
Seterusnya, kami mencipta vektor
vector<Base*> vec; vec.push_back(new Base()); vec.push_back(new Derived1()); vec.push_back(new Derived2());
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(); }
Output:
Base Derived1 Derived2
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!