多态 = 重写 = 覆盖
C++中多态是指同一个操作作用于不同的对象可以有不同的解释,产生不同的执行结果,多态是通过虚函数实现的,在派生类中重写基类的虚函数。调用方法:声明基类的指针,利用该指针指向派生类对象,就可以用该指针调用派生类中重写后的虚函数。这样就可以根据指向的派生类不同,而实现不同的方法。
多态的特点:
在派生类和基类中的函数名相同,有相同的参数,在基类中该函数使用virtual修饰,则是多态。
多态的绑定:
运行时多态性:
编译时不能确定函数调用地址,需要在程序运行时才能确定,则是晚绑定。
编译时多态性:
编译时多态性是由函数重载来实现的,在编译期就可以确定函数的调用地址,系统根据传递的参数来决定实现何种操作。
重载
在同一个作用域,重新定义一个同名函数,该函数具有不同的参数个数或者不同的参数类型。则说新定义的函数重载了原先的函数。
隐藏
隐藏是指派生类的函数屏蔽(隐藏)了与其同名的基类函数。隐藏的理解:在调用一个类成员函数的时候,编译器会沿着继承链逐级向上查找函数的定义,如果找到了就停止查找。如果派生类和基类中都有一个同名函数,则编译器会选择派生类中的函数。这样子就说派生类中的成员函数隐藏了基类中的成员函数。也就是说它组织了编译器继续向上查找。
隐藏的特点:
1.在派生类和基类中函数名相同,有相同的参数,基类中没有用virtual修饰,则称为隐藏
2.在派生类和基类中函数名相同,参数不同,基类中不管有没有virtual修饰都称为隐藏。