设为首页收藏本站 |天气与日历| 2025-07-02 星期三 05:20:00 乙巳(蛇)年 六月初八 卯时
     
切换到窄版

私人站点

 找回密码
 立即注册
搜索
查看: 210|回复: 0

C++的一些语法特性.七

[复制链接]

954

主题

954

帖子

3879

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3879
发表于 2022-1-12 21:58:24 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
01-C++Day03到Day06课程复习.avi
02-静态联编和动态联编.avi
03-虚函数原理剖析.avi
04-虚函数深入剖析.avi
05-多态案例-计算器实现.avi
06-纯虚函数和抽象类.avi
07-虚析构和纯虚析构.avi
08-向上向下类型转换.avi
09-重载、重写、重定义.avi
10-电脑组装案例需求分析.avi
11-电脑组装案例实现.avi
1 静态联编动态联编
1.1 静态多态和动态多态
1.2 静态多态:函数重载,运算符重载
1.3 动态多态:
1.3.1 //先有继承关系
1.3.2 //父类中有虚函数,子类重写父类中的虚函数
1.3.3 //父类的指针或引用  指向子类的对象
1.4 静态多态在编译阶段绑定地址,地址早绑定,静态联编
1.5 动态多次在运行阶段绑定地址,地址晚绑定,动态联编
2 多态原理
2.1 当父类写了虚函数后,类内部结构发生改变,多了一个vfptr
2.2 vfptr 虚函数表指针  ---- > vftable 虚函数表
2.3 虚函数表内部记录着 虚函数的入口地址
2.4 当父类指针或引用指向子类对象,发生多态,调用是时候从虚函数中找函数入口地址
2.5 虚函数 关键字  virtual
2.6 利用指针的偏移调用 函数
2.6.1 ((void(*)()) (*(int *)*(int *)animal)) ();
2.6.2 typedef void( __stdcall *FUNPOINT)(int);
2.6.3  (FUNPOINT (*((int*)*(int*)animal + 1)))(10);
3 多态案例 - 计算器案例
3.1 设计抽象计算器类,分别实现加减乘计算,继承于抽象计算器类,重写虚函数
3.2 利用多态可以调用不同计算器
3.3 多态的好处
3.3.1 代码可读性强
3.3.2 组织结构清晰
3.3.3 扩展性强
3.4 开闭原则: 对扩展进行开放  对修改进行关闭
4 纯虚函数和抽象类
4.1 语法: virtual int getResult() = 0;
4.2  //如果一个类中包含了纯虚函数,那么这个类就无法实例化对象了,这个类通常我们称为 抽象类
4.3  //抽象类的子类 必须要重写 父类中的纯虚函数,否则也属于抽象类
5 虚析构和纯虚析构
5.1 虚析构语法:
5.1.1 virtual ~Animal(){}
5.1.2 如果子类中有指向堆区的属性,那么要利用虚析构技术 delete的时候 调用子类的析构函数
5.2 纯虚析构语法:
5.2.1 virtual ~Animal() = 0;
5.2.2 Animal::~Animal(){ .. }
5.2.3  //纯虚析构 需要有声明 也需要有实现
5.2.4  //如果一个类中 有了 纯虚析构函数,那么这个类也属于抽象类,无法实例化对象了
6 向上类型转换和向下类型转换
6.1 父转子   向下类型转换   不安全
6.2 子转父   向上类型转换   安全
6.3 如果发生多态,那么转换永远都是安全的
7 重载、重写、重定义
7.1 重载
7.1.1 函数重载
7.1.2 同一个作用域下,函数名称相同,参数个数、顺序、类型不同
7.2 重写
7.2.1 子类重写父类中的虚函数,函数返回值、函数名、形参列表完全一致称为重写
7.3 重定义
7.3.1 子类重新定义父类中的同名成员函数,隐藏掉父类中同名成员函数,如果想调用加作用域
8 多态案例2  - 电脑组装案例
8.1 利用多态实现 电脑组装
9

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|编程站点 ( 冀ICP备2023028127号-2 )|友链申请|

GMT+8, 2025-7-2 05:20 , Processed in 0.084579 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表