C++7

C++笔记7

1静态联编和动态联编
1.1多态分类
1.1.1静态多态 函数重载
1.1.2动态多态 虚函数 继承关系
1.2静态联编
1.2.1地址早绑定 编译阶段绑定好地址
1.3动态联编
1.3.1地址晚绑定 ,运行时候绑定好地址
1.4多态
1.4.1父类的引用或指针指向子类对象
2多态原理解析
2.1当父类中有了虚函数后,内部结构就发生了改变
2.2内部多了一个 vfprt
2.2.1virtual function pointer 虚函数表指针
2.2.2指向 vftable 虚函数表
2.3父类中结构 vfptr &Animal::speak
2.4子类中 进行继承 会继承 vfptr vftable
2.5构造函数中 会将虚函数表指针 指向自己的虚函数表
2.6如果发生了重写,会替换掉虚函数表中的原有的speak,改为 &Cat::speak
2.7深入剖析,内部到底如何调用
2.8((void()()) ((int*)(int)animal))();
2.9猫吃鱼的函数调用(编译器的调用)
3多态案例 – 计算器案例
3.1早期方法 是不利于扩展
3.2开发有原则 开闭原则 – 对扩展开放 对修改关闭
3.3利用多态实现 – 利于后期扩展,结构性非常好,可读性高, 效率稍微低,发生多态内部结构复杂
4抽象类 和 纯虚函数
4.1纯虚函数写法 virtual void func() = 0;
4.2抽象类型
4.3抽象类 不可以实例化对象
4.4如果类 继承了抽象类, 必须重写抽象类中的纯虚函数
5虚析构和纯虚析构
5.1虚析构
5.1.1virtual ~类名() {}
5.1.2解决问题: 通过父类指针指向子类对象释放时候不干净导致的问题
5.2纯虚析构函数
5.2.1写法 virtual ~类名() = 0
5.2.2类内声明 类外实现
5.2.3如果出现了纯虚析构函数,这个类也算抽象类,不可以实例化对象
6向上类型转换和向下类型转换
6.1基类转派生类
6.1.1向下类型转换 不安全的
6.2派生类转 基类
6.2.1向上类型转换 安全
6.3如果发生多态
6.3.1总是安全的
6.4父类中如果写了虚函数,而子类没有任何重写,有意义吗?
6.4.1没有意义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值