C++总结(四)
一、多态 1.多态的概念 多态:同一个事物,在不同场景下表现出的不同的状态 2.多态的分类 静态多态(早绑定,静态联编): 在编译期间,根据所传递的实参类型或者实例化的类型,来确定到底应该调用那个函数即:在编译期间确定了函数的行为—函数重载、模板 动态多态(晚绑定,动态联编):在程序运行时,确定具体应该调用那个函数 3.动态多态的实现条件-- -在继承的体系中 虚函数&重写:基类中必须包含有虚函数(被virtual修饰的成员函数),派生类必须要对基类的虚函数进行重写 关于虚函数调用:必须通过基类的指针或引用调用虚函数 体现:在程序运行时,基类的指针或引用指向那个子类的对象,就会调用那个子类的虚函数 4.重写 1.基类中的函数一定是虚函数 2.派生类虚函数必须与基类虚函数的原型一致:返回值类型 函数名字(参数列表) 例外: a、协变–基类虚函数返回值基类的指针或引用 派生类虚函数返回派生类的指针或引用基类虚函数和派生类虚函数的返回值类型可以不同 b、析构函数:如果将基类中析构函数设置成虚函数,派生类的析构函数提供,两个析构函数就可以构成重写;两个析构函数名字不同 3.基类虚函数可以和派生类虚函数的访问权限不一-样 4、为了让编译器在编译期间帮助用户检测是否重写成功,C+ +11提供非常有用的关键字 1、override:专门]让编译帮助用户检测派生类是否成功重写了基类的虚函数