C++

  1. 基类指针、派生类指针、
    1. 父类指针可以调用父类的成员函数、父类指针不可以调用子类的成员函数、
    2. 即调用父类又子类的同名同参函数的指针、类型必须是父类的类型、而且得在父类同名函数之前条件virtual声明声明成虚函数、
    3. 函数在父类中声明成虚函数则所有的子类中均为虚函数、
    4. 在子类函数声明中添加override便表示子类将覆盖父类的同名函数、仅限于父类在虚函数中使用、否则override不起作用、主要用于防止父类和子类的同名同参函数写错、
    5. 调用虚函数是动态绑定、同名同参函数、只有在运行时才知道调用了某个函数、而非编译时、
    6. 虚函数必须写定义、
  2. 虚函数、——virtual定义虚函数、
    1. override
      1. 编译时从父类中查找同名同参的函数、
      2. 编译器自动纠错功能、
      3. 用在子类中、
    2. final
      1. 与override相对、
      2. 虚函数专用、用在父类而非子类、
      3. 父类在函数声明中添加final则表示任何尝试覆盖该函数的操作均错误、
  3. 多态性、
    1. 只是针对虚函数、体现在继承父类与子类之间子类重写(重新定义)父类成员函数、同时声明函数为virtual函数、
  4. 纯虚函数、
    1. 在基类中声明的虚函数、但是没有定义、要求任何子类都要定义该虚函数的自己实现方法
    2. 在基类的原函数后面添加 =0; 便实现了纯虚函数
    3. 纯虚函数没有函数体、只有一个函数声明、
    4. 类中定义了纯虚函数就不能生成此类的对象、此类被成为抽象类、
    5. 抽象类的目的是统一管理子类对象、当成基类来生成子类、
  5. 基类的析构函数一般写成虚函数(虚析构函数)、
    1. 在子类继承父类的函数中基类对派生类及其对象的操作只能影响到从基类继承下来的成员、
    2. 把基类的函数定义为虚函数就可以用基类对非继承成员进行操作、析构函数同样、
    3. 激励欸中析构函数的虚属性也会被继承给子类、这使子类的析构函数也变成了虚函数、
    4. 虚函数就是为了获取多态性、
    5. 类要做基类就必须将这个类的析构函数写成virtual析构函数、普通类可以不写析构函数、
    6. 基类的析构函数是虚函数、就能保证delete基类指针能够找到正确的析构函数版本、
    7. 虚函数会增加内存开销、只要类中定义了虚函数、编译器便会给这个类添加虚函数表、表里面存放的是虚函数指针、
posted on 2020-10-14 12:10  程耀辉  阅读(139)  评论(0编辑  收藏  举报