Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah polimorfisme menyokong delegasi dan pengendalian acara dalam C++?

Bagaimanakah polimorfisme menyokong delegasi dan pengendalian acara dalam C++?

WBOY
WBOYasal
2024-06-03 16:58:01775semak imbas

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.

C++ 中多态性如何支持委托和事件处理?

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!

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