C++ 多态 虚函数virtual 您所在的位置:网站首页 纯虚函数的声明以什么结束实现的 C++ 多态 虚函数virtual

C++ 多态 虚函数virtual

2023-06-05 14:47| 来源: 网络整理| 查看: 265

先解释虚函数,对于基类,子类继承基类后可能会调用其某个函数FA,而不同的子类继承了同一个基类后需要基类内某个同样的函数FA但又不是同个作用,此时则会在对应的子类内对应重载派生出FA_B函数和FA_C函数,而这时要求FA为虚函数(virtual)

那为什么不各自写成一个函数B和C呢?这就是多态的意义

对于基类A和子类B,C有

B b; C c; A *ab = &b; A *ac = &c;

则基类指针指向子类,此时调用其内函数

ab->FA; ac->FA;

虽然是同一个类的同一个函数,但是其效果不一致,这就是多态,即规范了写法又实现灵活的功能。

 

用法:

  基类内虚函数前缀virtual,纯虚函数则以const=0结尾,必须重载功能才有具体意义;而非纯虚函数则是先定义好功能,子类可选择性进行重载。

 

完整代码参考

#include // 形状的基类 class Shape { public: virtual double calculateArea() const = 0; }; // 矩形类 class Rectangle : public Shape { private: double length; double width; public: Rectangle(double l, double w) : length(l), width(w) {} double calculateArea() const override { return length * width; } }; // 圆类 class Circle : public Shape { private: double radius; public: Circle(double r) : radius(r) {} double calculateArea() const override { return 3.14 * radius * radius; } }; int main() { Rectangle rectangle(5, 4); Circle circle(3); Shape* shape1 = &rectangle; Shape* shape2 = &circle; // 通过基类指针调用不同对象的函数 std::cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有