C++/ 4/11 学习内容

  • 空指针调用结构体中的成员函数
  • const 修饰成员函数,不能更改函数成员的值
  • 友元, 让朋友可以访问本类的私有变量, 
    * 全局函数做友元
    * 类做友元
    * 成员函数做友元
  • 运算符重载:注意格式就ok
  • 还有<< 这个输出时候的重载,  各种个样的函数重载,主要是为了方便,在主函数里面的实现
  • 继承: 相当一个树的结构 
    class A : public B;
     
  • 3中继承方式, 就是把 public  private protected 再次加以限制而已
  • 继承同名成员处理方式, (静态和非静态同样)
  •     //当子类与父类拥有同名的成员函数,子类会隐藏父类中所有版本的同名成员函数
        //如果想访问父类中被隐藏的同名成员函数,需要加父类的作用域
  • C++允许**一个类继承多个类**  
    **C++实际开发中不建议用多继承**
  • class Son : public Base2, public Base1
  •  
     
    * 菱形继承带来的主要问题是子类继承两份相同的数据,导致资源浪费以及毫无意义
    * 利用虚继承可以解决菱形继承问
     
    多态: 
    * 静态多态的函数地址早绑定  -  编译阶段确定函数地址
    * 动态多态的函数地址晚绑定  -  运行阶段确定函数地址
    //我们希望传入什么对象,那么就调用什么对象的函数
    //如果函数地址在编译阶段就能确定,那么静态联编
    //如果函数地址在运行阶段才能确定,就是动态联编
    //函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不能确定函数调用了。
    //多态满足条件:
    //1、有继承关系
    //2、子类重写父类中的虚函数
     
    当类中有了纯虚函数,这个类也称为==抽象类==

    **抽象类特点**:

     * 无法实例化对象
     * 子类必须重写抽象类中的纯虚函数,否则也属于抽象类
     

    ​   1. 虚析构或纯虚析构就是用来解决通过父类指针释放子类对象

    ​   2. 如果子类中没有堆区数据,可以不写为虚析构或纯虚析构

    ​   3. 拥有纯虚析构函数的类也属于抽象类
     
     
     
     
     
     
     
     
     
     
     
     
posted @ 2023-04-11 22:22  VxiaohuanV  阅读(25)  评论(0编辑  收藏  举报