C++ polimorfisme dilaksanakan melalui fungsi maya dan pengikatan dinamik, menyokong delegasi dan pengendalian acara. Perwakilan membenarkan objek memanggil kaedah kelas asas melalui objek subkelas, sering digunakan dalam fungsi panggil balik. Pengendalian acara menggunakan perwakilan untuk melaksanakan kod apabila acara tertentu berlaku. Artikel ini menyediakan dua contoh: contoh perwakilan menunjukkan fungsi subkelas dipanggil melalui penuding kelas asas dan contoh pengendalian acara mengendalikan acara klik butang melalui pendengar butang.
Polymorphism dalam C++: Delegasi dan Pengendalian Acara
Polymorphism ialah ciri penting dalam pengaturcaraan berorientasikan objek yang membolehkan memanggil kaedah kelas asas melalui objek subkelas. Dalam C++, polimorfisme dicapai melalui fungsi maya dan pengikatan dinamik.
Delegate
Delegate ialah mekanisme komunikasi antara objek yang membolehkan objek mewakilkan tugas atau tingkah laku tertentu kepada objek lain. Perwakilan sering digunakan untuk melaksanakan fungsi panggil balik, di mana satu objek memanggil fungsi objek lain dan menunggu responsnya.
Contoh kod C++ berikut menunjukkan cara melaksanakan delegasi menggunakan polimorfisme:
#include <iostream> using namespace std; class Base { public: virtual void print() const { cout << "Base" << endl; } }; class Derived : public Base { public: void print() const override { cout << "Derived" << endl; } }; int main() { Base* b = new Derived(); // 多态性:Base 指针可以指向 Derived 对象 b->print(); // 调用派生类函数 return 0; }
Pengendalian acara
Pengendalian acara melibatkan pelaksanaan kod tertentu apabila peristiwa tertentu berlaku pada objek. Dalam C++, pengendalian acara boleh dilaksanakan menggunakan perwakilan.
Contoh kod C++ berikut menunjukkan cara menggunakan polimorfisme untuk melaksanakan pengendalian acara:
#include <iostream> using namespace std; class Button { public: void click() const { if (_listener) _listener->buttonClicked(); } void setListener(ButtonListener* listener) { _listener = listener; } private: ButtonListener* _listener = nullptr; }; class ButtonListener { public: virtual void buttonClicked() {} }; class Form { public: Form() : _button(new Button()) {} void setButtonListener(ButtonListener* listener) { _button->setListener(listener); } private: Button* _button; }; class MyListener : public ButtonListener { public: void buttonClicked() override { cout << "Button clicked!" << endl; } }; int main() { Form form; form.setButtonListener(new MyListener()); form._button->click(); return 0; }
Semoga contoh ini membantu anda memahami cara polimorfisme menyokong delegasi dan pengendalian acara dalam C++.
Atas ialah kandungan terperinci Bagaimanakah polimorfisme menyokong delegasi dan pengendalian acara dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!