C++ 多態性透過虛擬函數和動態綁定實現,支援委託和事件處理。委託允許物件透過子類別物件呼叫基底類別方法,常用在回呼函數中。事件處理使用委託,當特定事件發生時執行程式碼。本文提供了兩個範例:委託範例展示子類別函數透過基底類別指標調用,事件處理範例透過按鈕監聽器處理按鈕點擊事件。
C++ 中的多態性:委託和事件處理
##多態性是物件導向程式設計中的一項重要特性,它允許透過子類別物件呼叫基底類別方法。在 C++ 中,多態性透過虛函數和動態綁定來實現。委託
委託是一種物件間通訊機制,它允許物件將某些任務或行為委託給另一個物件。委託通常用於實現回調函數,其中一個物件調用另一個物件的函數並等待其回應。 以下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++ 中多態性如何支援委託和事件處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!