派生类和继承——(一)

本文详细介绍了面向对象编程中的继承概念,包括派生类如何从基类继承成员函数及数据,构造函数与析构函数的执行顺序,以及多重继承的情况。此外还解释了如何解决基类与派生类中成员名称冲突的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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. 多重继承的构造函数的执行顺序与单继承构造函数的执行顺序相同,也是遵循先执行基类的构造函数,再执行对象成员的构造函数,最后执行派生类构造函数的原则。析构函数的顺序与构造函数执行顺序相反。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值