• 继承


    基类 & 派生类

    一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名

    中,访问修饰符 access-specifier 是 public、protectedprivate 其中的一个,base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier,则默认为 private。

    假设有一个基类 ShapeRectangle 是它的派生类,如下所示:

    #include <iostream>

    using namespace std;

    // 基类
    class Shape
    {
       public:
          void setWidth(int w)
          { width = w;
          }
          void setHeight(int h)
          {
             height = h;
          }
       protected:
          int width;
          int height;
    };

    // 派生类
    class Rectangle: public Shape
    {
       public:
          int getArea()
          { return (width * height);
          }
    };

    int main(void)
    {
       Rectangle Rect;

       Rect.setWidth(5);
       Rect.setHeight(7);

       // 输出对象的面积
       cout << "Total area: " << Rect.getArea() << endl;

       return 0;
    }

    访问控制和继承

    派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。

    我们可以根据访问权限总结出不同的访问类型,如下所示

    访问publicprotectedprivate
    同一个类 yes yes yes
    派生类 yes yes no
    外部的类 yes no no

    一个派生类继承了所有的基类方法,但下列情况除外:

    • 基类的构造函数、析构函数和拷贝构造函数。
    • 基类的重载运算符。
    • 基类的友元函数。
    • 继承类型

      当一个类派生自基类,该基类可以被继承为 public、protectedprivate 几种类型。继承类型是通过上面讲解的访问修饰符 access-specifier 来指定的。

      我们几乎不使用 protectedprivate 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则:

      • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有保护成员来访问。
      • 保护继承(protected): 当一个类派生自保护基类时,基类的公有保护成员将成为派生类的保护成员。
      • 私有继承(private):当一个类派生自私有基类时,基类的公有保护成员将成为派生类的私有成员。
  • 相关阅读:
    IE6 select穿透问题(div 定位无法遮盖select)!
    NYOJ 35 表达式求值
    网络运营商名称显示&amp;SIM名称显示
    Android开发四大组件之Service(具体解释篇)
    RabbitMQ之消息确认机制(事务+Confirm)
    rabbitmq的发布确认和事务
    java finally return
    用 consul + consul-template + registrator + nginx 打造真正可动态扩展的服务架构
    consul vs etcd3
    LinkedIn实时低延迟数据抓取系统Databus开源
  • 原文地址:https://www.cnblogs.com/nku-wangfeng/p/7726201.html
Copyright © 2020-2023  润新知