• 基础语法——组合与继承


    继承

    定义派生类,即继承的一般语法结构如下

    1. class 派生类名 : [继承方式] 基类名
    2. {
    3. };

    例如

    1. class Point{
    2. int x, y;
    3. public:
    4. Point(int a=0, int b=0): x(a), y(b){}
    5. virtual double area() {return 0.0; };
    6. virtual double volume() { return 0.0; }
    7. };
    8. class Circle: public Point{
    9. ...
    10. };
    11. class Cylinder: public Circle{
    12. ...
    13. };

    虚函数

    虚函数体现了多态性

    通过关键字virtual将基类的函数声明为虚函数,允许派生类重写(覆盖)该函数

    1. class Point{
    2. int x, y;
    3. public:
    4. Point(int a=0, int b=0): x(a), y(b){}
    5. virtual double area() {return 0.0; };
    6. virtual double volume() { return 0.0; }
    7. };

    override说明符

    override说明符显式声明了派生类中的一个成员函数重写、覆盖(override)了一个基类中的虚函数

    1. class Point{
    2. int x, y;
    3. public:
    4. Point(int a=0, int b=0): x(a), y(b){}
    5. virtual double area() {return 0.0; };
    6. virtual double volume() { return 0.0; }
    7. };
    8. class Circle : public Point
    9. {
    10. public:
    11. double radius;
    12. Circle(double _radius, int a = 0, int b = 0) : radius(_radius), Point(a, b){};
    13. virtual double area () override
    14. {
    15. return pi * radius * radius;
    16. }
    17. virtual double volume() override
    18. {
    19. return 0.0;
    20. }
    21. };
    22. class Cylinder : public Circle
    23. {
    24. public:
    25. double height;
    26. Cylinder(double _height, double _radius, int a = 0, int b = 0) : height(_height), Circle(_radius, a, b){};
    27. virtual double area () override
    28. {
    29. return 2 * Circle :: area() + 2 * pi * radius * height;
    30. }
    31. virtual double volume() override
    32. {
    33. return Circle :: area() * height;
    34. }
    35. };

    P.S.:如果基类中成员函数没加virtual说明符,那么你在派生类中重写该成员函数时候就不用加override说明符,直接重写就可以 

  • 相关阅读:
    双向带头循环链表之重拳出击
    存钱虚拟计划,嘚
    spring的bean初始化策略
    安装使用zookeeper
    30天学习之-自动化测试
    GEN 自动生成 GORM 模型结构体文件及使用示例
    Springboot整合shiro
    web测试与app测试的区别
    01-go基础-05-数组(声明数组、数组赋值、遍历数组、数组值修改)
    基于EIoT能源物联网的工厂智能照明系统应用改造-Susie 周
  • 原文地址:https://blog.csdn.net/2301_76553467/article/details/139869006