学习c++ 必知三大特性

三大特性:封装、继承、多态(静态有函数重载、动态有虚函数(覆盖))。

  1. 封装:通过类和对象实现,控制访问机制体现在有私有、保护、公用。实现代码模块化
  2. 继承:实现代码扩展
  3. 多态:引申到虚函数,重写(或覆盖)。多态性表现在:1.静态编译多态(即重载)。2运行多态(以虚函数方式),具体表现在通过基类的指针调用子类对象的方法。
  4. 重写(或覆盖):当在子类中定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写(也称覆盖)了父类的这个虚函数。覆盖(重写)的前提条件:父类函数为虚函数(virtual);即同时满足3个条件:同名,同参,有virtual.
  5. A a;基类    B b; 子类 ,class B : public A 。多态的既可以通用基类的指针调用子类对象的方法( A *p = &b;)向上转换正常的,目的就是继承。
  6. 也可以通过子类的指针调用基类对象的方法( B *p = (B*)&a;)C++继承中的downcasting(向下转化)机制。
  7. 编译器为每一个类维护一个虚函数表,每个对象的首地址保存着该虚函数表的指针,同一个类的不同对象实际上指向同一张虚函数表
  8. 重定义(或说隐藏):在子类中,函数名相同,但是参数不同,不构成重写的,体现在没有virtual.
  9. 如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
  10. 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
  11. 纯虚函数是在基类只声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0” virtual void funtion()=0 。包含纯虚函数的类称为抽象类,不能定义抽象类的对象,派生类都要定义自所有虚函数的实现方法,不然派生类也是抽象类。

你可能感兴趣的:(c++)