派生类和继承——(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27305031/article/details/54561786
  1. 继承:新类可以从一个或多个已有类中继承函数和数据,而且可以重新定义或加进新的数据和函数。
  2. 声明一个派生类的格式:class 派生类名:【继承方式】基类名{派生类新增的数据成员和成员函数};
  3. 说明:除构造函数和析构函数不继承,其他都将被继承。可以改变基类的的访问属性,还可以重载函数。
  4. 派生类的构造函数:首先执行基类的构造函数,随后再执行派生类的构造函数。派生类的析构函数:先执行派生类的析构函数,在执行基类的构造函数。
  5. 派生类不能继承基类的构造函数和析构函数,当基类还有带参数的构造函数时,派生类必须定义构造函数,以提供把参数传递给基类构造函数的途径。
  6. 说明
    (1)派生类的构造函数定义在类的外部,而在类体内只写该函数的声明;在声明派生类构造函数时,不包括基类构造函数名及其参数表,只在类外定义构造函数时才能将它列出。
    (2)若基类使用默认构造函数或不带参数的构造函数,则在派生类中定义构造函数时可省出。
    (3)当基类构造函数不带参数时,派生类不一定需要定义构造函数,然而当基类的构造函数哪怕只带一个参数,它所有的派生类都必须定义构造函数。可能构造函数的函数体可能为空,仅仅器参数的传递作用。

  7. 含有对象成员的派生类的构造函数:派生类名 (参数总表):基类名(参数表 ),对象成员名(参数表){ 派生类新增成员的初始化语句);

  8. 构造函数和析构函数的执行顺序与规定的顺序是完全一致的
    (1)派生类中含有多个内嵌对象成员时,调用内嵌对象成员的构造函数顺序由类中声明的顺序确定。
    (2)派生类的基类也是一个派生类,每个派生类只需负责基类数据成员的初始化。
  9. 同名成员:在派生类中使用基类的同类成员,必须在该成员名之前加上基类名和作用域标示符::,必须使用下列格式才能访问到基类的同名成员。
  10. 访问声明机制可以在私有派生类中个别调整从基类继承下来的成员性质,从而使外界可以通过派生类的界面直接访问基类的某些成员,同时也不影响其他基类成员的封闭性。
  11. 说明:
    (1)数据成员也可以使用访问声明。
    (2)访问声明中只含不带类型和参数的函数名或变量名
    (3)访问声明不改变成员在基类中的访问属性只能把基类中的保护成员调整为私有派生类的保护成员,把原基类的公有成员调整为私有派生类的公有成员。但对基类的私有成员不能使用访问声明。
  12. 当一个派生类具有两个或多个基类中,这种派生类方法为多重继承或者多基派生。
  13. 默认的继承方式是private。冒号后面是部分称为基类表,各基类之间用逗号隔开。(class 派生类名:继承方式1 基类名1,……{派生类从基类新增的数据成员和成员函数};
  14. 对基类的访问必须无二义。
  15. 多重继承的构造函数的执行顺序与单继承构造函数的执行顺序相同,也是遵循先执行基类的构造函数,再执行对象成员的构造函数,最后执行派生类构造函数的原则。析构函数的顺序与构造函数执行顺序相反。

猜你喜欢

转载自blog.csdn.net/qq_27305031/article/details/54561786