8.1.1类的派生与继最 派生出来的新类同样可以作为基类再继续派生出更新 的类,依此类推形成一个层次结构。直接参与派生出某类 称为直接基类,而基类的基类,以及更高层的基类称为间 接基类 在派生类的声明中,还有访问控制,亦称为继承方式 是对基类成员进一步的限制。访问控制也是三种:公有 ( public)方式,保护( protected)方式和私有 rivate)方式,亦称公有继承、保护继承和私有继承。 如不显式给出访问控制关键字,则默认为私有继承 。首先吸收基类的成员;第二 步是改造基类成员,称为同名覆盖( override)。第 步发展新成员;第四步是重写构造函数与析构函数
8.1.1 类的派生与继承 派生出来的新类同样可以作为基类再继续派生出更新 的类,依此类推形成一个层次结构。直接参与派生出某类 称为直接基类,而基类的基类,以及更高层的基类称为间 接基类。 在派生类的声明中,还有访问控制,亦称为继承方式, 是对基类成员进一步的限制。访问控制也是三种:公有 (public)方式,保护(protected)方式和私有 (private)方式,亦称公有继承、保护继承和私有继承。 如不显式给出访问控制关键字,则默认为私有继承 编制派生类时可分四步。首先吸收基类的成员;第二 步是改造基类成员,称为同名覆盖(override)。第三 步发展新成员;第四步是重写构造函数与析构函数
8.1.2公有派生与私有派生 在派生类的定义中,基类前所加的访问限定符,对由 基类继承来的成员的访问作了进一步的限制。有两方面含 义:派生类成员成员的访问,及从派生类对象之外对派生 类对象中的基类成员的访问。 公有派生基类的公有和保护成员的访问属性在派生 类中不变,而基类的私有成员不可访问。公有派生是 最常用的派生方式。 基类中的公有成员和保护成员在派生类中 成为私有成员
8.1.2 公有派生与私有派生 在派生类的定义中,基类前所加的访问限定符,对由 基类继承来的成员的访问作了进一步的限制。有两方面含 义:派生类成员成员的访问,及从派生类对象之外对派生 类对象中的基类成员的访问。 1.公有派生 .基类的公有和保护成员的访问属性在派生 类中不变,而基类的私有 成员不可访问。公有派生是 最常用的派生方式。 2.私有派生。基类中的公有成员和保护成员在派生类中 成为私有成员 3.保护派生
8.1.2公有派生与私有派生 派生方式基类中的访问限定在派生类中对基类成员在派生类对象外访问派 的访问限定 生类对象的基类成员 p public 可直接访问 公有派生 protected protected 不可直接访问 private 不可直接访问 不可直接访问 public prva 不可直接访问 私有派生 protected rivate 不可直接访问 prvate 不可直接访问 不可直接访问 表81公有派生和私有派生
8.1.2 公有派生与私有派生 派生方式 基类中的访问限定 在派生类中对基类成员 的访问限定 在派生类对象外访问派 生类对象的基类成员 公有派生 public public 可直接访问 protected protected 不可直接访问 private 不可直接访问 不可直接访问 私有派生 public private 不可直接访问 protected private 不可直接访问 private 不可直接访问 不可直接访问 表8.1 公有派生和私有派生
1.3派皱的构造画飘与析构画 派生类的构造函数的定义形式为: 派生类名::派生类名(参数总表):基类名1(参数表 1)《,基类名2(参数表2),…,基类名n(参数表 n)》,《成员对象名1(成员对象参数表1), 成 员对象名m(成员对象参数表m)》{ /派生类新增成员的初始化; 冒号后的基类名,成员对象名的次序可以随意,这里 的次序与调用次序无关。在创建派生类对象时,系统会首 先使用各参数表中列出的参数,调用基类和成员对象的构 造函数
8.1.3 派生类的构造函数与析构函数 派生类的构造函数的定义形式为: 派生类名::派生类名(参数总表):基类名1(参数表 1)《,基类名2(参数表2),……,基类名n(参数表 n)》,《成员对象名1(成员对象参数表1),……,成 员对象名m(成员对象参数表m)》{ ……//派生类新增成员的初始化; } 冒号后的基类名,成员对象名的次序可以随意,这里 的次序与调用次序无关。在创建派生类对象时,系统会首 先使用各参数表中列出的参数,调用基类和成员对象的构 造函数
心u 813派类的构造画数与析构画数 派生类构造函数各部分的执行次序为: 1.调用基类构造函数,按它们在派生类定义的先后顺序, 顺序 调用。 2.调用成员对象的构造函数,按它们在类定义中声明的先后 顺序,顺序调用。 3.派生类的构造函数体中的操作。 在派生类构造函数中,只要基类不是缺省构造函数都要显式给出 基类名和参数表,除非基类使用默认的构造函数。 析构函数的功能是作善后工作,派生类析构函数只要把派生类新 增一般成员处理好就可以了。 析构函数各部分执行次序与构造函数相反,首先对派生类新增 般成员析构,然后对新增对象成员析构,最后对基类成员析构
8.1.3 派生类的构造函数与析构函数 派生类构造函数各部分的执行次序为: 1. 调用基类构造函数,按它们在派生类定义的先后顺序, 顺序 调用。 2. 调用成员对象的构造函数,按它们在类定义中声明的 先后 顺序,顺序调用。 3. 派生类的构造函数体中的操作。 在派生类构造函数中,只要基类不是缺省构造函数都要显式给出 基类名和参数表,除非基类使用默认的构造函数。 析构函数的功能是作善后工作,派生类析构函数只要把派生类新 增一般成员处理好就可以了。 析构函数各部分执行次序与构造函数相反,首先对派生类新增一 般成员析构,然后对新增对象成员析构,最后对基类成员析构