概述
1 静态联编和动态的联编
1.1 分类 静态多态 动态多态
1.2 静态多态
1.2.1 运算符重载 函数重载
1.2.2 地址早绑定,编译阶段绑定的
1.3 动态多态
1.3.1 继承 虚函数
1.3.2 地址晚绑定 ,运行时候再去绑定地址
1.4 virtual void fun() 虚函数
2 多态的工作原理
2.1 当父类中有了虚函数中,内部维护一个虚函数表指针,指向自己的虚函数表
2.2 当子类中发生了重写,将自己的虚函数覆盖到虚函数表中
2.3 在运行阶段,发生多态情况下,就会晚绑定地址,找自己的函数地址
3 深入剖析内部的工作原理
3.1 __cdecl //C++默认调用方式
3.2 我们用的调用方式 __stdcall
3.3 typedef void(__stdcall *FUNCCAT)(int);
4 多态练习 计算器案例
4.1 利用原来的写法非常不利于维护和扩展
4.2 但是利用多态来写计算器,可以对扩展提供非常大的好处,利用维护,利用扩展,可读性比较强
4.3 多态就是父类的指针或者引用 指向子类的对象
4.4 开闭原则 – 对扩展进行开放,对修改进行关闭
5 纯虚函数和抽象类
5.1 virtual void func() = 0 纯虚函数的写法
5.2 类 也称为 抽象类
5.3 抽象类 是不能实例化对象的
5.4 抽象类中的纯虚函数 子类在继承的时候 必须要重写
6 虚析构和纯虚析构
6.1 虚析构纯虚析构 解决的问题
6.1.1 发送多态时候,让父类调用子类中的析构函数
6.2 区别
6.2.1 如果是写了纯虚析构 ,这个类就变为 抽象类,不可以实例化对象了
6.2.2 而虚析构依然是可以实例化对象的
7 重写 、重定义、重载
7.1 重载 指的是 函数重载
7.1.1 同一个作用域 参数 个数、类型、顺序不同
7.2 重定义
7.2.1 有继承关系 非虚函数, 子类和父类有了同名的成员,子类会隐藏父类成员,重定义
7.3 重写
7.3.1 有继承关系,父类中的virtual函数,在子类中可以进行重写
7.3.2 重写 返回值 函数名 参数个数、类型顺序都一致
8 向上和向下类型转换
8.1 基类转派生类
8.1.1 不安全
8.1.2 向下类型转换
8.2 派生类 转 基类
8.2.1 安全
8.2.2 向上类型转换
8.3 当发生了多态,类型转换 永远都是安全的
9
最后
以上就是快乐凉面为你收集整理的【c++基础】笔记(七)的全部内容,希望文章能够帮你解决【c++基础】笔记(七)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复