C++继承知识点小结

本文总结了C++继承的关键知识点,包括虚基派生与多基派生的区别,如何处理二义性问题,以及构造析构函数的调用规则。同时,探讨了隐藏、覆盖、重载的概念,以及基类与派生类对象之间的相互转换操作。

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

虚基派生二义性与多基派生二义性不同点

多基派生

  • 多基派生的二义性主要是成员名的二义性,通过加作用域限定符来解决

  • 虚集派生的二义性则是共同基类成员的多重拷贝带来的存储二义性,使用virtual派生解决

  • 二义性的检查是在访问权限检查之前进行的,因此,成员的访问权限是不能消除二义性的

有继承关系的构造析构调用总结
  • 派生时,构造函数和析构函数是不能继承的,为了对基类成员进行初始化,必须对派生类重新定义构造函数和析构函数,并在构造函数的初始化列表中调用基类的构造函数
  • 由于派生类对象通过继承而包含了基类数据成员,因此,创建派生类对象时,系统首先通过派生类的构造函数来调用基类的构造函数,完成基类成员的初始化,而后对派生类中新增的成员进行初始化。
  • 在执行派生类析构函数时,积累析构函数会被自动调用,执行顺序是限制性派生类的析构函数,在执行基类的析构函数,这和执行构造函数时的顺序正好相反。
隐藏、覆盖、重载
  • 隐藏(oversee):父子类,函数名称相同,但参数不同,无论virtual关键字的函数。
  • 覆盖(override):父子类,函数的名称、返回值类型、参数类型个数相同,带virtual关键字的函数
  • 重载(overload):同一个类,函数名称相同,参数不同(类型、顺序、个数)。
    在这里插入图片描述
基类与派生类对象间的相互转换

类型适应:派生类适应于基类,派生类的对象、引用、指针适应于基类对象,引用、指针

  • 可以把派生类的对象复制给基类的对象
  • 可以把派生类的对象赋值给基类的引用
  • 可以声明基类的指针指向派生类的对象(向上转型)
Base base;//基类Base的对象base
Derived derived;//派生类Derived的对象derived
base = derived; //可以把一个派生类对象赋值给基类对象
derived = base;//不可以把一个派生类对象赋值给基类对象
Base *pbase = &base;
pbase = &derived;//向上转型,是安全的
Derived *pderived = (Derived*)pbase;//向下转型,是不安全的

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值