C++知识点归纳(五)

    科技2022-07-13  150

    转换函数(双向)

    这里实现的是分数转为double类型(黄色部分为转换函数)

    这里是讲double类型的4,通过调用蓝色部分的,转换为4/1的分数类型

    这种情况会导致二义性,因为两种转换方式共存

    加入了explicit后,double类型的4就不会被转为4/1了,所以报错

    pointer-like classes(类模拟指针)

    1、智能指针 智能指针其实是一个对象,但智能指针里面肯定是包含着一个真正的指针的! 但也同时,指针所能做的事情,智能指针也是要都能做到的

    这里的两个操作符重载是一定要有的,*-> 2、迭代器

    **对智能指针的理解不够,后续需要再看看** 回头再看看下面的链接(https://blog.csdn.net/qq_17846375/article/details/104626460)

    namespace,类、函数、成员模板

    注意上图和智能指针的联系

    模板这块的知识见这篇博客

    模板泛化和特化

    偏特化:1、个数的偏;2、范围的偏

    模板模板参数

    视频10,11,1214再看看

    关于标准库

    这里的容器存的就是数据结构

    reference

    是签名的一部分,两个函数一个有const,一个没有,是可以并存的

    虚指针和虚表(面试常问)

    A,B,C都有两个虚函数,只不过B和C都改写了虚函数vfunc1() 父类有虚函数,子类一定有 对于继承,数据部分继承的是内存,函数部分继承的是调用权 vtbl:虚表 vptr:虚指针 只要类里面有一个(或者一万个)虚函数,对象里面就会多一个指针

    虚机制,动态绑定(满足这三点:1、指针2、向上转型3、虚函数),就可以写成中间最下面那种(两行) 多态,虚函数,动态绑定

    this

    this是一个指针 图中myDoc的地址就是this **结合前面的虚指针和虚表再看看**

    动态绑定

    a.vfunc1()不是通过指针,是静态绑定(call xxx固定地址)

    A* pa = new B;就是向上转型

    const

    const也是签名的一部分

    new和delete及其重载(????)

    视频23、24、25再看看

    参考

    Processed: 0.009, SQL: 8