c++高级_第十四章_继承

目录

一、继承和派生

二、继承中的构造和析构

1.子类的 构造 析构顺序

 三、子类和父类的同名处理

1.子类和父类 同名成员变量

2.子类和父类 同名成员函数  

3.子类 重定义 父类的同名函数

4.子类不能从父类继承的成员

四、多继承

 1.菱形继承

 五、虚继承

1.虚继承的方式


一、继承和派生

继承的作用:提高代码重用,提高开发效率

(c++最重要的特征 是 代码重用)

派生类的定义:

继承方式:private protected public(推荐)

所有父类的私有在子类中不可访问。

公有继承,各类保持不变;保护继承,各类变成保护;私有继承,各类变成私有。

二、继承中的构造和析构

1.子类的 构造 析构顺序

 

 成员 是 对象成员(以下other是一个类)

 三、子类和父类的同名处理

同名成员 最简单 最安全的处理方式:加作用域(多继承也是)

1.子类和父类 同名成员变量

子类默认优先访问 子类的同名成员,想访问父类的同名成员 必须加父类作用域

2.子类和父类 同名成员函数  

 

3.子类 重定义 父类的同名函数

重载:无继承,同一作用域,参数个数不同、顺序不同、类型不同 都可重载。

重定义:有继承,此类重定义父类的同名函数(参数可以不同,非虚函数)。子类一旦重定义了父类的同名函数,子类都将屏蔽父类所有的同名函数。但也可以访问屏蔽的父类同名函数,加父类作用域即可。  

重写:有继承,子类,重写父类的虚函数。函数名、返回值类型、参数类型个数顺序 必须完全一致。(具体见 十五章虚函数定义)

4.子类不能从父类继承的成员

构造函数、析构函数、重载(其完成类似 构造函数 的行为,所以也不行)

四、多继承

内涵:同时从多个类继承。(但是从多个类继承,可能会导致函数、变量等同名,引起较多的歧义)

任何 多继承 都可以用 单继承 替代(工程开发中,多继承几乎不被使用,它对代码维护性上的影响是灾难性的)

格式

 1.菱形继承

内涵:有公共祖先的继承(最底层的子类 会包含 多份公共祖先的数据)

 五、虚继承

解决 菱形继承中 多份公共祖先数据的问题。

1.虚继承的方式

在继承方式前加 virtual 修饰。子类虚继承父类,子类只会保存一份公共数据(不能解决 没有公共祖先的多继承)。

虚继承 会在子类中产生 虚基类指针(vbptr),指向 虚基类表(vbtable),虚基类表 记录的是 通过该指针访问公共祖先的数据的偏移量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值