C++ 多态 虚函数virtual | 您所在的位置:网站首页 › 纯虚函数的声明以什么结束实现的 › C++ 多态 虚函数virtual |
先解释虚函数,对于基类,子类继承基类后可能会调用其某个函数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 实验室设备网 版权所有 |