函數繼承允許衍生類別繼承並重複使用基底類別的函數。透過使用虛擬函數,可以實現程式碼重複使用,其中衍生類別可以覆蓋基底類別的同名函數,並根據呼叫物件類型動態執行不同的函數版本。
C 函數繼承詳解:如何使用虛擬函數實作程式碼重複使用
##引言
#函數繼承是物件導向程式設計(OOP) 中的重要技術,它允許衍生類別繼承並重複使用基底類別的函數。透過使用虛擬函數,可以實現更為靈活和可擴展的程式碼復用。什麼是虛函數?
虛擬函數是一種特殊的成員函數,它允許衍生類別覆寫基底類別的同名函數。當呼叫虛擬函數時,實際執行的函數版本會根據呼叫物件類型而動態決定。語法
虛擬函數使用關鍵字
virtual
class Base { public: virtual void print() const; // 虚函数 };
透過使用虛擬函數,我們可以實作程式碼重複使用。例如,假設我們有一個基底類別
Shape,它包含一個
draw()
class Shape { public: virtual void draw() const; };
我們可以從
Shape 衍生出不同的形狀類,例如
Circle 和
Rectangle,並為每個形狀實作自己的
draw() 函數:class Circle : public Shape { public: void draw() const override; }; class Rectangle : public Shape { public: void draw() const override; };
當我們創建
Circle 和
Rectangle 物件並呼叫它們的
draw() 函數時,將執行對應的衍生類別函數,從而實現不同的繪製行為。 實戰案例
考慮以下程式碼片段,它示範如何使用虛函數來實現程式碼復用:#include <iostream> using namespace std; class Shape { public: virtual void draw() const { cout << "Drawing a generic shape" << endl; } }; class Circle : public Shape { public: void draw() const override { cout << "Drawing a circle" << endl; } }; class Rectangle : public Shape { public: void draw() const override { cout << "Drawing a rectangle" << endl; } }; int main() { Shape* shapes[] = {new Circle(), new Rectangle()}; for (int i = 0; i < 2; i++) { shapes[i]->draw(); } return 0; }
Drawing a circle Drawing a rectangle
在這個案例中,
Shape 類別是基底類,它包含虛擬函數
draw()。
Circle 和
Rectangle 是衍生類,它們重寫了
draw() 函數以提供特定於形狀的繪製行為。透過使用虛擬函數,我們可以輕鬆地呼叫不同形狀的
draw() 函數,而無需知道它們的特定類型。 ###以上是C++ 函式繼承詳解:如何使用虛函式實作程式碼復用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!