虛函數是OOP 中的關鍵機制,允許衍生類別覆寫基底類別函數,實現動態綁定,帶來可擴展性、多態性和程式碼重用優勢:概念:虛函數在基底類別中聲明並標記為virtual;衍生類別可覆寫虛函數,提供自己的實作。動態綁定:C 使用動態綁定來在執行時間確定要呼叫的虛函數實作。優點:虛擬函數增強可擴展性、多態性和程式碼重用,讓您可以輕鬆建立衍生類別並針對不同的類別實例執行特定的行為。
C 虛擬函數完全指南:從概念到實作
簡介
虛函數是一項基本的物件導向(OOP) 機制,它允許衍生類別繼承和覆寫基底類別的函數。這使您可以建立靈活且可擴展的程式碼,針對不同的類別實例表現出不同的行為。
概念
虛擬函數透過在基底類別中聲明它們並使用virtual
關鍵字對其進行標記:
class Base { public: virtual void print() { cout << "Base::print()" << endl; } };
衍生類別可以覆寫虛擬函數,提供自己的實作:
class Derived : public Base { public: virtual void print() override { cout << "Derived::print()" << endl; } };
動態綁定
#C 使用動態綁定機制來在執行時間確定要呼叫的虛函數實現。當您調用一個虛擬函數時,編譯器會插入一個間接調用,該調用會在運行時解析正確的函數實作。
優勢
使用虛函數有一些優點:
實戰案例
建立一個抽象形狀類別Shape,並定義一個print() 虛函數:
class Shape { public: virtual void print() = 0; };
建立一個矩形類Rectangle,繼承自Shape 並覆寫print():
class Rectangle : public Shape { public: void print() override { cout << "Rectangle" << endl; } };
建立一個圓形類別Circle,繼承自Shape 並覆寫print():
class Circle : public Shape { public: void print() override { cout << "Circle" << endl; } };
在main() 函數中,您可以建立Shape 物件數組並使用其print() 方法:
int main() { Shape* shapes[] = { new Rectangle(), new Circle() }; for (Shape* shape : shapes) { shape->print(); } return 0; }
這將輸出:
Rectangle Circle
以上是C++ 虛擬函數完全指南:從概念到實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!