重载(overload)、重写:覆盖(override)、重定义:遮蔽(redefine)、多态

  • 同一域名空间,函数名相同,签名不同
  • 编译期绑定确定绑定函数,也称为静态多态

重写:覆盖(override)

  • 虚函数
  • 子类空间,函数名相同,签名相同

重定义:遮蔽(redefine)

  • 非虚函数,子类成员函数与父类成员函数同名
  • 虚函数,子类成员函数与父类成员函数同名但不同签名

多态:(动态多态)

  • 运行期确定绑定对象,也称为动态多态
  • 同签名虚函数构成覆盖
  • 父类指针指向子类对象,调用属于子类的函数

  • 顶层函数重载操作符
    • 非对象操作数可以出现在操作符左边
    • 使用类成员函数重载是,第一操作数必须是累的对象
    • 顶层函数不能直接访问类私有成员,最好将顶层重载函数设为友元函数,方便直接访问私有数据成员
  • 重载[]: 重载为成员函数,检查下标 , 返回一个引用适应左值情况
  • 重载(): 函数调用重载操作符
  • 析构函数出现,必须定义拷贝构造,赋值构造函数

  • 继承下的构造函数:
    • 先父类按继承顺序构造,再成员按顺序构造,最后派生类构造
    • 每一层只负责调用父类构造函数
    • 基类没有默认构造时,子类构造函数必须显式调用基类的某个构造函数
    • 创建派生类对象时,自动调用基类默认构造函数
      • 子类有构造函数,基类没有默认构造,创建子类对象时,自动创建基类默认构造函数
      • 子类没有构造函数,基类有默认构造,创建子类对象时,自动调用基类默认构造
      • 子类有构造函数,基类也有默认构造,创建子类对象时,直接调用基类默认构造,或者调用子类显式调用的构造函数
      • 子类基类均有构造,但是基类没有默认构造,创建子类对象时,必须显式调用基类构造函数
  • 继承下的析构函数: 定义实现对派生类新增成员的析构释放
  • 虚基类构造优先于非虚基类的构造
  • 虚基类构造由最派生类调用,其他派生类跳过对虚基类构造的调用
  • 派生类对象和指针可适用于任何基类对象或指针使用的位置(子类可以向上转型)
  • 赋值兼容:子类对象可以赋值或者初始化父类对象,基类指针可以指向子类对象地址
posted @ 2016-11-06 19:21  zeroArn  阅读(315)  评论(0)    收藏  举报