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

WBOY
Lepaskan: 2024-06-03 16:58:01
asal
769 orang telah melayarinya

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

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