【c++基础】笔记(七)
来源:互联网 发布:apache bench 编辑:程序博客网 时间:2024/05/30 05:12
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语言基础(七)
- Java基础 笔记(七)
- JAVA基础笔记(七)
- 【c++基础】笔记(七)
- C++primer笔记(七)
- C语言笔记(七)
- 零基础学C语言 笔记七 一维数组
- C语言基础(七)指针
- objective-c 编程基础(七 块)
- C语言基础(七)- 动态内存
- java基础语法学习笔记(七)
- java基础学习笔记(七) ajax
- HTML5基础学习笔记(七)
- Java语言基础学习笔记(七)
- python基础学习笔记(七)
- 《Effective C++》学习笔记(七)
- C语言程序学习(七)笔记
- C语言深度剖析笔记(七)
- 链表问题---环形单链表的约瑟夫问题
- Mysql show profile 详解
- mini-MBA学习总结四:高效沟通
- C# Android BackupSupport 1.3.0(快速备份文件、打开、剪切板操作,手机做宏键盘)
- lesson11 算术运算符与算术表达式
- 【c++基础】笔记(七)
- ztree入门应用(二)
- 腾讯2017暑期实习生编程题
- 【c++基础】笔记(八)
- Centos7 安装配置 VNCserver
- centos 升级mysql 5.1 到5.6(及rpm安装可能启动不了问题)
- 【c++基础】笔记(九)
- ztree入门应用总结
- Centos mysql 创建用户