在C++中,多態性是通過虛函數(virtual function)實現的。虛函數是在基類中聲明的,可以在派生類中重寫(override)它。當通過基類指針或引用調用虛函數時,實際調用的函數是基類中定義的版本,但在運行時會根據對象的實際類型來決定調用哪個版本的函數。這就是動態綁定或多態性的概念。
下面是一個簡單的示例,展示了如何在C++中實現多態性:
#include <iostream>
// 基類 Shape
class Shape {
public:
// 虛函數 area()
virtual double area() const {
return 0.0;
}
};
// 派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
// 重寫虛函數 area()
double area() const override {
return 3.14 * radius * radius;
}
private:
double radius = 5.0;
};
// 派生類 Rectangle,繼承自 Shape
class Rectangle : public Shape {
public:
// 重寫虛函數 area()
double area() const override {
return width * height;
}
private:
double width = 4.0;
double height = 6.0;
};
int main() {
// 使用基類指針指向派生類對象
Shape* shape1 = new Circle();
Shape* shape2 = new Rectangle();
// 通過基類指針調用虛函數 area()
std::cout << "Circle area: " << shape1->area() << std::endl;
std::cout << "Rectangle area: " << shape2->area() << std::endl;
// 釋放內存
delete shape1;
delete shape2;
return 0;
}
在這個示例中,我們定義了一個基類Shape
和兩個派生類Circle
和Rectangle
?;愔杏幸粋€虛函數area()
,派生類中重寫了這個函數。在main()
函數中,我們使用基類指針分別指向派生類對象,并通過基類指針調用虛函數area()
。運行時,根據對象的實際類型(Circle
或Rectangle
),調用了相應的area()
函數版本。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。