多态、虚函数、纯虚函数 |
您所在的位置:网站首页 › 纯虚函数实现多态 › 多态、虚函数、纯虚函数 |
什么是多态: 指的是指令的多种形态,当同一个指令被调用时,它能根据参数、环境的不同做出相应的操作,这种情况叫做多态 根据确定执行哪个操作的最终时间,将多态分为编译时多态、运行时多态 一、编译时多态: 当调用重载函数时,编译器会根据函数参数的类型、个数等,在编译器就能确定执行的是哪个版本的重载函数,这个就叫做编译时多态,模板技术也是。 二、运行时多态: 当子类覆盖了父类的同名函数,然后用父类指针或引用指向子类对象,并访问虚函数时,它可以根据父类指向那个子类对象,来调用该子类的同名函数,也就是说具体调用的是哪个版本的子类同名函数取决于父类指针或引用的目标,这个如果需要再运行时才能确定,就叫做运行时多态。 构成运行时多态的条件 1、父子类之间有覆盖关系 2、子类是以public方式继承的 3、通过父类指针或引用调用虚函数 什么是虚函数 当该成员函数前加virtual关键词后,这样函数就称为虚函数,允许在派生类中对基类的虚函数重新定义 构造函数不能是虚函数。 什么是覆盖(重写) 如果子类中有与父类的虚函数名相同的成员函数,编译器会比较两个同名函数的格式,如果完全相同,则会把子类中同名函数的地址覆盖父类的虚函数表中的记录,这种情况叫做函数覆盖或者函数重写,如果格式不相同则构成隐藏 构成函数覆盖的条件 a、在父子类之间 b、父类中的函数为虚函数 c、返回值、函数名、参数列表必须完全相同 d、返回值类型相同,或者子类函数的返回值可以向父类函数的返回值作隐式强转换且有继承关系,也可构成函数覆盖 什么是纯虚函数 纯虚函数的格式: virtual 返回值 函数名(参数列表) =0; 特点: 1、纯虚函数可以不实现(可以在类外实现,但一般人不实现) 2、有纯虚函数的类不能创建对象 3、父类中如果有纯虚函数,子类中必须要覆盖,否则也无法创建出对象 4、纯虚函数是一种强制子类实现某个功能的方法 5、有纯虚函数的类叫做抽象类 6、析构函数不能定义为纯虚函数
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |