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

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

WBOY
WBOYasal
2024-04-28 15:09:011096semak imbas

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; };
};

Seterusnya, kami mencipta vektor127b8e7a8005b7ca155b7968ef03abec 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());

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!

Kenyataan:
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