20240507 C加加复习(三)

昨天晚上看了啥
-
C++三大特性以及实现
-
虚函数的具体实现原理
三大特性
继承 封装 多态
-
继承 是子类继承父类的代码 某种程度上增加了代码的复用性 使得代码之间具有一定的层次结构
-
封装 是将代码和数据一起捆绑对外限制接触 保证了数据的安全性和代码的可维护性(更加容易阅读修改梳理)
class 和struct 的区别
struct可以看作只是一个复杂一点的数据结构吧
class的话可以看作一个包含了数据和行为的对象,某种程度上是基于面向对象思想实现的,并且具有继承性和多态性
-
多态 是同一个行为在不同的对象身上具有不同的表现形式 一般是通过基类指针指向子类对象虚函数表的动态绑定来实现的(另一个层面来看,也是通过虚函数和函数重写来进行实现的)
虚函数以及其实现原理
-
虚函数是什么:虚函数是允许子类对父类进行重写的函数,虚函数其实暗含了继承和重写这两层前提在
-
虚函数的实现原理:虚函数通过虚函数表和虚指针来实现的
同一种对象中的虚指针是相同的,这些虚指针指向相同的虚表,虚表中包含着当前类的对象的所有可以被调用的虚函数
具有继承关系的两个不同类型的对象中的虚指针是不同的,指向的虚表也是不同的
联系的话,就是当子类重写了父类中的某个虚函数的时候,子虚表的与父类相同索引/函数的那个地方的函数调用地址将会被替换
虚函数是在运行的时候通过索引来直接实现调用的,并不是将对象和虚函数们一一捆绑来实现的,子类如果不重写虚函数,拿到的就是对应父类的虚函数对应地址,子类如果重写了虚函数,拿到的就是对应子类重写后函数的对应地址
-
纯虚函数、抽象类:就是必须要继承该父类的子类重写的类,拥有纯虚函数的类也被称作抽象类
Comments
Comment plugin failed to load
Loading comment plugin