ポリモーフィズムは C++ での委任とイベント処理をどのようにサポートしますか?

WBOY
リリース: 2024-06-03 16:58:01
オリジナル
766 人が閲覧しました

C++ ポリモーフィズムは仮想関数と動的バインディングを通じて実装され、委任とイベント処理をサポートします。デリゲートを使用すると、オブジェクトはサブクラス オブジェクトを通じて基本クラスのメソッドを呼び出すことができ、これはコールバック関数でよく使用されます。イベント処理では、特定のイベントが発生したときにデリゲートを使用してコードを実行します。この記事では、2 つの例を示します。デリゲートの例では、基本クラス ポインターを介して呼び出されるサブクラス関数を示し、イベント処理の例では、ボタン リスナーを介してボタン クリック イベントを処理します。

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

C++ のポリモーフィズム: 委任とイベント処理

ポリモーフィズムは、サブクラス オブジェクトを介して基本クラスのメソッドを呼び出すことを可能にする、オブジェクト指向プログラミングにおける重要な機能です。 C++ では、ポリモーフィズムは仮想関数と動的バインディングによって実現されます。

Delegate

Delegate は、オブジェクトが特定のタスクや動作を別のオブジェクトに委任できるようにするオブジェクト間通信メカニズムです。デリゲートは、あるオブジェクトが別のオブジェクトの関数を呼び出し、その応答を待つコールバック関数を実装するためによく使用されます。

次の C++ コード例は、ポリモーフィズムを使用して委任を実装する方法を示しています。

#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;
}
ログイン後にコピー

イベント処理

イベント処理には、オブジェクトで特定のイベントが発生したときに特定のコードの実行が含まれます。 C++ では、デリゲートを使用してイベント処理を実装できます。

次の C++ コード例は、ポリモーフィズムを使用してイベント処理を実装する方法を示しています:

#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;
}
ログイン後にコピー

これらの例が、ポリモーフィズムが C++ で委任とイベント処理をどのようにサポートするかを理解するのに役立つことを願っています。

以上がポリモーフィズムは C++ での委任とイベント処理をどのようにサポートしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート