多態性是一種物件導向程式設計特性,它允許物件在運行時表現出不同的行為,即使它們擁有相同的父類別。在 C++ 中,實作多型性透過虛函數和繼承:定義基底類別和衍生類別:基底類別包含虛函數,而衍生類別繼承基底類別並覆寫虛函數。使用指標或參考:透過指標或引用保存基類物件的位址,在執行時存取不同衍生類別的物件。透過虛擬函數呼叫:呼叫基底類別中的虛擬函數,它將在運行時呼叫覆蓋的衍生類別函數。實戰案例:在形狀類別層次結構中,Circle 和Rectangle 類別繼承Shape 類別並覆寫area()、perimeter() 和draw() 虛函數,允許這些形狀在
如何使用多型性?
定義基底類別和衍生類別:定義一個基底類,其中包含虛擬函數。衍生類別繼承基底類,並覆寫虛擬函數,以提供不同的實作。
使用指標或引用:透過指標或引用來保存基底類別物件的位址。這允許在運行時訪問不同派生類別的物件。
透過虛擬函數呼叫:在基底類別中呼叫虛擬函數,它將在執行時間呼叫覆蓋的衍生類別函數,具體取決於實際物件類型。
實戰案例:形狀類別層次結構
class Shape { public: virtual double area() = 0; virtual double perimeter() = 0; virtual void draw() = 0; };
class Circle : public Shape { public: ... // 构造函数和数据成员 virtual double area() override; virtual double perimeter() override; virtual void draw() override; }; class Rectangle : public Shape { public: ... // 构造函数和数据成员 virtual double area() override; virtual double perimeter() override; virtual void draw() override; };######使用多態性計算面積和周長######
vector<Shape*> shapes; shapes.push_back(new Circle(...)); shapes.push_back(new Rectangle(...)); for (auto& shape : shapes) { cout << "面积: " << shape->area() << endl; cout << "周长: " << shape->perimeter() << endl; shape->draw(); }######優點:############################################### #簡化程式碼,保持基底類別和衍生類別的解耦。 ######提高程式碼的可擴充性和可維護性。 ######允許在運行時動態處理不同物件。 ######
以上是C++ 中如何使用多態性來處理不同物件的差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!