C++类设计中如何实现多态性?

多态性允许派生类具有不同行为,同时共享相同的接口,实现此目的的步骤包括:创建基类、派生类、虚函数和使用基类指针,示例代码展示了如何使用形状类层次结构(shape、rectangle、circle)实现多态性,计算不同形状的总面积。实现 C+

多态性允许派生类具有不同行为,同时共享相同的接口,实现此目的的步骤包括:创建基类、派生类、虚函数和使用基类指针,示例代码展示了如何使用形状类层次结构(shape、rectangle、circle)实现多态性,计算不同形状的总面积。

C++类设计中如何实现多态性?

实现 C++ 中多态性的类设计

何为多态性?

多态性允许派生类与基类拥有不同的行为,同时共享相同的接口。它提供了一种优雅的方式来创建具有类似行为但具体实现不同的对象集合。

实现多态性的步骤:

  1. 创建基类:定义派生类将共享的通用接口。
  2. 派生类:从基类创建派生类,实现特定行为。
  3. 虚函数:在基类中声明虚函数,在派生类中重新定义。这允许在运行时动态绑定函数调用。
  4. 基类指针:使用基类指针或引用来持有派生类对象,实现多态性。

实战案例:

考虑一个形状类的层次结构:

class Shape {
public:
    virtual double area() = 0; // 纯虚函数(必须在派生类中重新定义)
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}
    double area() override { return width_ * height_; }
private:
    double width_;
    double height_;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}
    double area() override { return 3.14 * radius_ * radius_; }
private:
    double radius_;
};

登录后复制

用法:

// 创建不同形状的集合
vector<Shape*> shapes;
shapes.push_back(new Rectangle(2.0, 3.0));
shapes.push_back(new Circle(4.0));

// 使用基类指针计算总面积
double totalArea = 0.0;
for (Shape* shape : shapes) {
    totalArea += shape->area(); // 使用多态性动态绑定函数调用
}

// 输出总面积
cout << "Total area: " << totalArea << endl;

登录后复制

输出:

Total area: 37.68

登录后复制

以上就是C++类设计中如何实现多态性?的详细内容,更多请关注叮当号网其它相关文章!

文章来自互联网,只做分享使用。发布者:牧草,转转请注明出处:https://www.dingdanghao.com/article/562707.html

(0)
上一篇 2024-06-02 14:00
下一篇 2024-06-03 10:40

相关推荐

联系我们

在线咨询: QQ交谈

邮件:442814395@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信公众号