在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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。