20240507 C加加复习(三)
明昧 Lv7

昨天晚上看了啥

  • C++三大特性以及实现

  • 虚函数的具体实现原理

三大特性

继承 封装 多态

  • 继承 是子类继承父类的代码 某种程度上增加了代码的复用性 使得代码之间具有一定的层次结构

  • 封装 是将代码和数据一起捆绑对外限制接触 保证了数据的安全性和代码的可维护性(更加容易阅读修改梳理)

    class 和struct 的区别

    struct可以看作只是一个复杂一点的数据结构吧

    class的话可以看作一个包含了数据和行为的对象,某种程度上是基于面向对象思想实现的,并且具有继承性和多态性

  • 多态 是同一个行为在不同的对象身上具有不同的表现形式 一般是通过基类指针指向子类对象虚函数表的动态绑定来实现的(另一个层面来看,也是通过虚函数和函数重写来进行实现的)

虚函数以及其实现原理

  • 虚函数是什么:虚函数是允许子类对父类进行重写的函数,虚函数其实暗含了继承和重写这两层前提在

  • 虚函数的实现原理:虚函数通过虚函数表和虚指针来实现的

    同一种对象中的虚指针是相同的,这些虚指针指向相同的虚表,虚表中包含着当前类的对象的所有可以被调用的虚函数

    具有继承关系的两个不同类型的对象中的虚指针是不同的,指向的虚表也是不同的

    联系的话,就是当子类重写了父类中的某个虚函数的时候,子虚表的与父类相同索引/函数的那个地方的函数调用地址将会被替换

    虚函数是在运行的时候通过索引来直接实现调用的,并不是将对象和虚函数们一一捆绑来实现的,子类如果不重写虚函数,拿到的就是对应父类的虚函数对应地址,子类如果重写了虚函数,拿到的就是对应子类重写后函数的对应地址

  • 纯虚函数、抽象类:就是必须要继承该父类的子类重写的类,拥有纯虚函数的类也被称作抽象类

 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
Unique Visitor Page View